Merge pull request #309696 from Uthar/lisp-removal-of-previous-variants

Lisp modules - removal of previous variants
This commit is contained in:
7c6f434c 2024-05-08 10:04:39 +00:00 committed by GitHub
commit 55e9b296c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
466 changed files with 35 additions and 96488 deletions

View File

@ -683,6 +683,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
making it possible to accumulate definitions without resorting to `mkForce`,
hence to retain the definitions not anticipating that need.
- Lisp modules: previously deprecated interface based on `common-lisp.sh` has now been removed.
- `youtrack` is bumped to 2023.3. The update is not performed automatically, it requires manual interaction. See the YouTrack section in the manual for details.
- QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).

View File

@ -10,7 +10,7 @@ in
options = {
services.xserver.windowManager.clfswm = {
enable = mkEnableOption "clfswm";
package = mkPackageOption pkgs [ "lispPackages" "clfswm" ] { };
package = mkPackageOption pkgs [ "sbclPackages" "clfswm" ] { };
};
};

View File

@ -11,7 +11,7 @@
, bind
, cmake
, knot-resolver
, lispPackages
, sbclPackages
, luajitPackages
, mosquitto
, neovim
@ -105,7 +105,7 @@ stdenv.mkDerivation (finalAttrs: {
passthru.tests = {
inherit bind cmake knot-resolver mosquitto neovim nodejs;
inherit (lispPackages) cl-libuv;
inherit (sbclPackages) cl-libuv;
luajit-libluv = luajitPackages.libluv;
luajit-luv = luajitPackages.luv;
ocaml-luv = ocamlPackages.luv;

View File

@ -1 +0,0 @@
imported.nix linguist-vendored

View File

@ -1,3 +0,0 @@
result
*.sqlite
*.fasl

View File

@ -1,197 +0,0 @@
## The API
This page documents the Nix API of nix-cl.
## Overview
The core API functions are `build-asdf-system` and
`lispWithPackagesInternal`.
They are considered more low-level that the rest of the API, which
builds on top of them to provide a more convenient interface with sane
defaults.
The higher-level API provides a lot of pre-configured packages,
including all of Quicklisp, and consists of the functions:
- `lispPackagesFor`
- `lispWithPackages`
Finally, there are functions that provide pre-defined Lisps, for
people who don't need to customize that:
- `abclPackages`, `eclPackages`, `cclPackages`, `claspPackages`, `sbclPackages`
- `abclWithPackages`, `eclWithPackages`, `cclWithPackages`, `claspWithPackages`, `sbclWithPackages`
The following is an attempt to document all of this.
## Packaging systems - `build-asdf-system`
Packages are declared using `build-asdf-system`. This function takes
the following arguments and returns a `derivation`.
#### Required arguments
##### `pname`
Name of the package/library
##### `version`
Version of the package/library
##### `src`
Source of the package/library (`fetchzip`, `fetchgit`, `fetchhg` etc.)
##### `lisp`
This command must load the provided file (`$buildScript`) then exit
immediately. For example, SBCL's --script flag does just that.
#### Optional arguments
##### `patches ? []`
Patches to apply to the source code before compiling it. This is a
list of files.
##### `nativeLibs ? []`
Native libraries, will be appended to the library
path. (`pkgs.openssl` etc.)
##### `javaLibs ? []`
Java libraries for ABCL, will be appended to the class path.
##### `lispLibs ? []`
Lisp dependencies These must themselves be packages built with
`build-asdf-system`
##### `systems ? [ pname ]`
Some libraries have multiple systems under one project, for example,
[cffi] has `cffi-grovel`, `cffi-toolchain` etc. By default, only the
`pname` system is build.
`.asd's` not listed in `systems` are removed before saving the library
to the Nix store. This prevents ASDF from referring to uncompiled
systems on run time.
Also useful when the `pname` is different than the system name, such
as when using [reverse domain naming]. (see `jzon` ->
`com.inuoe.jzon`)
[cffi]: https://cffi.common-lisp.dev/
[reverse domain naming]: https://en.wikipedia.org/wiki/Reverse_domain_name_notation
##### `asds ? systems`
The .asd files that this package provides. By default, same as
`systems`.
#### Return value
A `derivation` that, when built, contains the sources and pre-compiled
FASL files (Lisp implementation dependent) alongside any other
artifacts generated during compilation.
#### Example
[bordeaux-threads.nix] contains a simple example of packaging
`alexandria` and `bordeaux-threads`.
[bordeaux-threads.nix]: /examples/bordeaux-threads.nix
## Building a Lisp with packages: `lispWithPackagesInternal`
Generators of Lisps configured to be able to `asdf:load-system`
pre-compiled libraries on run-time are built with
`lispWithPackagesInternal`.
#### Required Arguments
##### `clpkgs`
An attribute set of `derivation`s returned by `build-asdf-system`
#### Return value
`lispWithPackagesInternal` returns a function that takes one argument:
a function `(lambda (clpkgs) packages)`, that, given a set of
packages, returns a list of package `derivation`s to be included in
the closure.
#### Example
The [sbcl-with-bt.nix] example creates a runnable Lisp where the
`bordeaux-threads` defined in the previous section is precompiled and
loadable via `asdf:load-system`:
[sbcl-with-bt.nix]: /examples/sbcl-with-bt.nix
## Reusing pre-packaged Lisp libraries: `lispPackagesFor`
`lispPackagesFor` is a higher level version of
`lispPackagesForInternal`: it only takes one argument - a Lisp command
to use for compiling packages. It then provides a bunch of ready to
use packages.
#### Required Arguments
##### `lisp`
The Lisp command to use in calls to `build-asdf-system` while building
the library-provided Lisp package declarations.
#### Return value
A set of packages built with `build-asdf-system`.
#### Example
The [abcl-package-set.nix] example generates a set of thousands of packages for ABCL.
[abcl-package-set.nix]: /examples/abcl-package-set.nix
## Reusing pre-packaged Lisp libraries, part 2: `lispWithPackages`
This is simply a helper function to avoid having to call
`lispPackagesFor` if all you want is a Lisp-with-packages wrapper.
#### Required Arguments
##### `lisp`
The Lisp command to pass to `lispPackagesFor` in order for it to
generate a package set. That set is then passed to
`lispWithPackagesInternal`.
#### Return value
A Lisp-with-packages function (see sections above).
#### Example
The [abcl-with-packages.nix] example creates an `abclWithPackages` function.
[abcl-with-packages.nix]: /examples/abcl-with-packages.nix
## Using the default Lisp implementations
This is the easiest way to get going with `nix-cl` in general. Choose
the CL implementation of interest and a set of libraries, and get a
lisp-with-packages wrapper with those libraries pre-compiled.
#### `abclPackages`, `eclPackages`, `cclPackages`, `claspPackages`, `sbclPackages`
Ready to use package sets.
#### `abclWithPackages`, `eclWithPackages`, `cclWithPackages`, `claspWithPackages`, `sbclWithPackages`
Ready to use wrapper generators.
#### Example
For example, to open a shell with SBCL + hunchentoot + sqlite in PATH:
```
nix-shell -p 'with import ./. {}; sbclWithPackages (ps: [ ps.hunchentoot ps.sqlite ])'
```

View File

@ -1,98 +0,0 @@
## Use cases
This page lists some possible use cases for nix-cl.
## Pinning down the exact commits of libraries
Sometimes, a bug is fixed upstream but is not yet available in package
repositories such as Quicklisp or Ultralisp. The users have to wait
for the repository maintainer to update it, or download and compile
the patched sources themselves.
This is a manual and hard to reproduce process. By leveraging Nix,
users of `nix-cl` can essentially "run their own package repository",
written as Nix code, with all the benefits of that (shareability,
cacheability, reproducibility, version-controllable etc.)
## Modifying libraries with patches
Other times, a bug in a library is not fixed upstream, but you fixed
it yourself. Or, you would like a change to the internals that the
maintainers don't like.
Sure, you could fork the code or maintain patches manually, but that
becomes hard to manage with a lot of patches. It also doesn't have the
benefits mentioned in the previous section.
`nix-cl` provides a way of applying version-controlled patches to any
package.
## Using libraries not available in repositories
There are useful and working libraries out there, that are nonetheless
unavailable to users of package managers such as Quicklisp or
Ultralisp. Two real-world examples are [jzon] and [cl-tar].
`nix-cl` is not tied to any particular package source: instead,
packages are written as a Nix expression, which can be done manually
or generated/imported.
This frees the user to have any package they want, and not be
constrained by a central repository.
## Reproducible environments
The usual way to develop a project involves several steps, such as:
1. Installing a Lisp implementation
2. Installing a package manager
3. Installing the chosen libraries
This is not necessarily reproducible. It's unlikely to come back a
year later and develop the project using the exact same versions of
the dependencies.
Things can break between attempts at different points in time. The
repository could have updated versions in the meantime. The source
tarballs could become unreachable.
With `nix-cl` you can have your own binary cache for Lisp libraries
and not be affected by downtime of other central repositories.
## Testing across CL implementations
One can manually download different Lisp implementations and run tests
of a package. This works well in most cases, but it is limited in how
you can tweak the software. Some practical examples are:
- Statically compiling [zlib] into [SBCL]
- Building SBCL with the `--fancy` flag
- Compiling [ECL] as a static library
These are usually hard to do manually, unless you have the necessary
compilers already configured. These combinations are usually not
available from package managers as well.
With Nix it's easier, because it will set up the build environment
automatically. It could be useful to, for example:
- Test against all possible compiler flag combinations
- Libc versions (ECL)
- JDK versions ([ABCL])
[zlib]: https://zlib.net
[SBCL]: https://sbcl.org
[ECL]: https://ecl.common-lisp.dev/
[Ultralisp]: https://ultralisp.org/
[jzon]: https://github.com/Zulu-Inuoe/jzon
[cl-tar]: https://gitlab.common-lisp.net/cl-tar/cl-tar
[bootstrap tools]: https://github.com/NixOS/nixpkgs/tree/master/pkgs/stdenv/linux/bootstrap-files
[nixpkgs]: https://github.com/NixOS/nixpkgs
## Windows note
Note that all of this still only applies to Unix systems - primarily because Nix doesn't work on Windows.
If you have an idea how to port some of the functionality to Windows, get in touch.

View File

@ -1,54 +0,0 @@
## Importing package definitions from Quicklisp
This page documents how to import packages from Quicklisp.
## Nix dumper
Run:
```
$ nix-shell
$ sbcl --script ql-import.lisp
```
This command runs a program that dumps a `imported.nix` file
containing Nix expressions for all packages in Quicklisp. They will be
automatically picked up by the `lispPackagesFor` and
`lispWithPackages` API functions.
It also creates a 'packages.sqlite' file. It's used during the
generation of the 'imported.nix' file and can be safely removed. It
contains the full information of Quicklisp packages, so you can use it
to query the dependency graphs using SQL, if you're interested.
## Tarball hashes
The Nix dumper program will re-use hashes from "imported.nix" if it
detects that it's being run for the first time. This saves a lot of
bandwidth by not having to download each tarball again.
But when upgrading the Quicklisp release URL, this can take a while
because it needs to fetch the source code of each new system to
compute its SHA256 hash. This is because Quicklisp only provides a
SHA1 , and Nix's `builtins.fetchTarball` requires a SHA256.
Later on, the hashes are cached in `packages.sqlite`, and are reused
in subsequent invocations. Therefore you might want to keep the
'packages.sqlite' file around if you'd like to keep hashes of
historical Quicklisp tarballs, for example for archival purposes.
## Choosing a Quicklisp release
Quicklisp release url's are currently hard-coded and can be changed
directly in the source code. See the `import` directory.
## Native and Java libraries
At the moment, native and Java libraries need to be added manually to
imported systems in `ql.nix` on an as-needed basis.
## Dependencies from packages.nix
Also worth noting is that systems imported from Quicklisp will prefer
packages from `packages.nix` as dependencies, so that custom versions
can be provided or broken versions replaced.

View File

@ -1,5 +0,0 @@
## Quirks
- `+` in names are converted to `_plus{_,}`: `cl+ssl`->`cl_plus_ssl`, `alexandria+`->`alexandria_plus`
- `.` to `_dot_`: `iolib.base`->`iolib_dot_base`
- names starting with a number have a `_` prepended (`3d-vectors`->`_3d-vectors`)

View File

@ -1,24 +0,0 @@
# To run this example from a nix repl, run:
# $ nix repl
# nix-repl> abcl-packages = import ./abcl-package-set.nix
# nix-repl> builtins.attrNames abcl-packages
# nix-repl> builtins.length (builtins.attrNames abcl-packages)
#
# The import returns a package set, which you can use for example to
# discover what packages are available in lispWithPackages:
#
# nix-repl> abcl-packages.cl-op<TAB>
# nix-repl> abcl-packages.cl-opengl
# nix-repl> # cool, we can use cl-opengl
# nix-repl> # some-abcl-with-packages (p: [ p.cl-opengl ])
let
pkgs = import ../../../../default.nix {};
abcl = "${pkgs.abcl}/bin/abcl --batch --load";
abcl-packages = pkgs.lispPackages_new.lispPackagesFor abcl;
in abcl-packages

View File

@ -1,23 +0,0 @@
# To run this example from a nix repl, run:
# $ nix repl
# nix-repl> abcl-with-packages = import ./abcl-with-packages.nix
# nix-repl> :b abcl-with-packages (p: [ p.cffi ])
#
# The import returns a function, which you can call to get access to
# thousands of libraries, like, cffi. This works in ABCL by closing
# over the JNA dependency:
#
# nix-repl> awp = abcl-with-packages (p: [ p.cffi ])
# nix-repl> awp.CLASSPATH
# nix-repl> cffi = builtins.head (awp.lispLibs)
# nix-repl> cffi.javaLibs
let
pkgs = import ../../../../default.nix {};
abcl = "${pkgs.abcl}/bin/abcl --batch --load";
abcl-with-packages = pkgs.lispPackages_new.lispWithPackages abcl;
in abcl-with-packages

View File

@ -1,43 +0,0 @@
# To run this example from the command line, run this command:
#
# $ nix-build ./bordeaux-threads.nix
# $ ls ./result/
#
# To run from a nix repl, run:
# $ nix repl
# nix-repl> bt = import ./bordeaux-threads.nix
# nix-repl> :b bt
#
# In the `result` directory you can find .fasl files of the
# bordeaux-threads library:
#
# $ ls -l ./result/src/
let
pkgs = import ../../../../default.nix {};
sbcl = "${pkgs.sbcl}/bin/sbcl --script";
alexandria = pkgs.lispPackages_new.build-asdf-system {
pname = "alexandria";
version = "v1.4";
src = pkgs.fetchzip {
url = "https://gitlab.common-lisp.net/alexandria/alexandria/-/archive/v1.4/alexandria-v1.4.tar.gz";
sha256 = "0r1adhvf98h0104vq14q7y99h0hsa8wqwqw92h7ghrjxmsvz2z6l";
};
lisp = sbcl;
};
bordeaux-threads = pkgs.lispPackages_new.build-asdf-system {
pname = "bordeaux-threads";
version = "0.8.8";
src = pkgs.fetchzip {
url = "https://github.com/sionescu/bordeaux-threads/archive/v0.8.8.tar.gz";
sha256 = "19i443fz3488v1pbbr9x24y8h8vlyhny9vj6c9jk5prm702awrp6";
};
lisp = sbcl;
lispLibs = [ alexandria ];
};
in bordeaux-threads

View File

@ -1,31 +0,0 @@
# To run this example from the command line, run this command:
# $ nix-build ./sbcl-with-bt.nix
# $ ls ./result/
#
# To run from a nix repl, run:
# $ nix repl
# nix-repl> sbcl-bt = import ./sbcl-with-bt.nix
# nix-repl> :b sbcl-bt
#
# In the `result/bin` directory you can find an `sbcl` executable
# that, when started, is able to load the pre-compiled
# bordeaux-threads from the Nix store:
# $ ./result/bin/sbcl
# * (require :asdf)
# * (asdf:load-system :bordeaux-threads)
let
pkgs = import ../../../../default.nix {};
sbcl = "${pkgs.sbcl}/bin/sbcl --script";
bordeaux-threads = import ./bordeaux-threads.nix;
sbclPackages = { inherit bordeaux-threads; };
sbclWithPackages = pkgs.lispPackages_new.lispWithPackagesInternal sbclPackages;
sbcl-bt = sbclWithPackages (p: [ p.bordeaux-threads ]);
in sbcl-bt

View File

@ -1,18 +0,0 @@
(defpackage org.lispbuilds.nix/api
(:documentation "Public interface of org.lispbuilds.nix")
(:use :cl)
(:export
:import-lisp-packages
:database->nix-expression))
(in-package org.lispbuilds.nix/api)
(defgeneric import-lisp-packages (repository database)
(:documentation
"Import Lisp packages (ASDF systems) from repository (Quicklisp,
Ultralisp etc.) into a package database."))
(defgeneric database->nix-expression (database outfile)
(:documentation
"Generate a nix expression from the package database and write it
into outfile."))

View File

@ -1,162 +0,0 @@
(defpackage org.lispbuilds.nix/database/sqlite
(:use :cl)
(:import-from :str)
(:import-from :sqlite)
(:import-from :alexandria :read-file-into-string)
(:import-from :arrow-macros :->>)
(:import-from
:org.lispbuilds.nix/util
:replace-regexes)
(:import-from
:org.lispbuilds.nix/nix
:nix-eval
:system-master
:nixify-symbol
:make-pname
:*nix-attrs-depth*)
(:import-from
:org.lispbuilds.nix/api
:database->nix-expression)
(:export :sqlite-database :init-db)
(:local-nicknames
(:json :com.inuoe.jzon)))
(in-package org.lispbuilds.nix/database/sqlite)
(defclass sqlite-database ()
((url :initarg :url
:reader database-url
:initform (error "url required"))
(init-file :initarg :init-file
:reader init-file
:initform (error "init file required"))))
(defun init-db (db init-file)
(let ((statements (->> (read-file-into-string init-file)
(replace-regexes '(".*--.*") '(""))
(substitute #\Space #\Newline)
(str:collapse-whitespaces)
(str:split #\;)
(mapcar #'str:trim)
(remove-if #'str:emptyp))))
(sqlite:with-transaction db
(dolist (s statements)
(sqlite:execute-non-query db s)))))
;; Writing Nix
(defparameter prelude "
# This file was auto-generated by nix-quicklisp.lisp
{ runCommand, fetchzip, pkgs, ... }:
# Ensures that every non-slashy `system` exists in a unique .asd file.
# (Think cl-async-base being declared in cl-async.asd upstream)
#
# This is required because we're building and loading a system called
# `system`, not `asd`, so otherwise `system` would not be loadable
# without building and loading `asd` first.
#
let createAsd = { url, sha256, asd, system }:
let
src = fetchzip { inherit url sha256; };
in runCommand \"source\" {} ''
mkdir -pv $out
cp -r ${src}/* $out
find $out -name \"${asd}.asd\" | while read f; do mv -fv $f $(dirname $f)/${system}.asd || true; done
'';
getAttr = builtins.getAttr;
in {")
;; Random compilation errors
(defparameter +broken-packages+
(list
;; no dispatch function defined for #\t
"hu.dwim.logger"
"hu.dwim.serializer"
"hu.dwim.quasi-quote"
;; Tries to write in $HOME
"ubiquitous"
"math"
;; Upstream bad packaging, multiple systems in clml.blas.asd
"clml.blas.hompack"
;; Fails on SBCL due to heap exhaustion
"magicl"
;; Probably missing dependency in QL data
"mcclim-bezier"
;; Missing dependency on c2ffi cffi extension
"hu.dwim.zlib"
;; Missing libgvc.so native library
"hu.dwim.graphviz"
;; These require libRmath.so, but I don't know where to get it from
"cl-random"
"cl-random-tests"
))
(defmethod database->nix-expression ((database sqlite-database) outfile)
(sqlite:with-open-database (db (database-url database))
(with-open-file (f outfile
:direction :output
:if-exists :supersede)
;; Fix known problematic packages before dumping the nix file.
(sqlite:execute-non-query db
"create temp table fixed_systems as select * from system_view")
(sqlite:execute-non-query db
"alter table fixed_systems add column systems")
(sqlite:execute-non-query db
"update fixed_systems set systems = json_array(name)")
(sqlite:execute-non-query db
"alter table fixed_systems add column asds")
(sqlite:execute-non-query db
"update fixed_systems set asds = json_array(name)")
(format f prelude)
(dolist (p (sqlite:execute-to-list db "select * from fixed_systems"))
(destructuring-bind (name version asd url sha256 deps systems asds) p
(format f "~% ")
(let ((*nix-attrs-depth* 1))
(format
f
"~a = ~a;"
(nix-eval `(:symbol ,name))
(nix-eval
`(:attrs
("pname" (:string ,(make-pname name)))
("version" (:string ,version))
("asds" (:list
,@(mapcar (lambda (asd)
`(:string ,(system-master asd)))
(coerce (json:parse asds) 'list))))
("src" (:funcall
"createAsd"
(:attrs
("url" (:string ,url))
("sha256" (:string ,sha256))
("system" (:string ,(system-master name)))
("asd" (:string ,asd)))))
("systems" (:list
,@(mapcar (lambda (sys)
`(:string ,sys))
(coerce (json:parse systems) 'list))))
("lispLibs" (:list
,@(mapcar (lambda (dep)
`(:funcall
"getAttr"
(:string ,(nixify-symbol dep))
(:symbol "pkgs")))
(remove "asdf"
(str:split-omit-nulls #\, deps)
:test #'string=))))
,@(when (or (find #\/ name)
(find name +broken-packages+ :test #'string=))
'(("meta" (:attrs ("broken" (:symbol "true"))))))))))))
(format f "~%}~%"))))

View File

@ -1,41 +0,0 @@
CREATE TABLE IF NOT EXISTS sha256 (
id integer PRIMARY KEY AUTOINCREMENT,
url text UNIQUE,
hash text NOT NULL,
created real DEFAULT (julianday('now'))
);
CREATE TABLE IF NOT EXISTS system (
id integer PRIMARY KEY AUTOINCREMENT,
name text NOT NULL,
version text NOT NULL,
asd text NOT NULL,
created real DEFAULT (julianday('now')),
UNIQUE(name, version)
);
CREATE TABLE IF NOT EXISTS dep (
system_id integer NOT NULL REFERENCES system(id),
dep_id integer NOT NULL REFERENCES system(id),
PRIMARY KEY (system_id, dep_id)
);
CREATE TABLE IF NOT EXISTS src (
sha256_id integer REFERENCES sha256(id),
system_id integer UNIQUE REFERENCES system(id)
);
DROP VIEW IF EXISTS system_view;
CREATE VIEW IF NOT EXISTS system_view AS
SELECT
sys.name,
sys.version,
sys.asd,
sha.url,
sha.hash,
group_concat((SELECT name FROM system WHERE id = dep.dep_id)) as deps
FROM system sys
JOIN src ON src.system_id = sys.id
JOIN sha256 sha ON sha.id = src.sha256_id
LEFT JOIN dep ON dep.system_id = sys.id
GROUP BY sys.name;

View File

@ -1,40 +0,0 @@
(defpackage org.lispbuilds.nix/main
(:use :common-lisp
:org.lispbuilds.nix/database/sqlite
:org.lispbuilds.nix/repository/quicklisp
:org.lispbuilds.nix/api))
(in-package org.lispbuilds.nix/main)
(defun resource (name type)
(make-pathname
:defaults (asdf:system-source-directory :org.lispbuilds.nix)
:name name
:type type))
(defvar *sqlite*
(make-instance
'sqlite-database
:init-file (resource "init" "sql")
:url "packages.sqlite"))
(defvar *quicklisp*
(make-instance
'quicklisp-repository
:dist-url
"https://beta.quicklisp.org/dist/quicklisp/2022-11-07/"))
(defun run-importers ()
(import-lisp-packages *quicklisp* *sqlite*)
(format t "Imported packages from quicklisp to ~A~%"
(truename "packages.sqlite")))
(defun gen-nix-file ()
(database->nix-expression *sqlite* "imported.nix")
(format t "Dumped nix file to ~a~%"
(truename "imported.nix")))
(defun main ()
(format t "~%")
(run-importers)
(gen-nix-file))

View File

@ -1,81 +0,0 @@
(defpackage org.lispbuilds.nix/nix
(:documentation "Utilities for generating Nix code")
(:use :cl)
(:import-from :str)
(:import-from :ppcre)
(:import-from :arrow-macros :->>)
(:import-from :org.lispbuilds.nix/util :replace-regexes)
(:export
:nix-eval
:system-master
:nixify-symbol
:make-pname
:*nix-attrs-depth*))
(in-package org.lispbuilds.nix/nix)
;; Path names are alphanumeric and can include the symbols +-._?= and
;; must not begin with a period.
(defun make-pname (string)
(replace-regexes '("^[.]" "[^a-zA-Z0-9+-._?=]")
'("_" "_")
string))
(defun system-master (system)
(first (str:split "/" system)))
;;;; Nix generation
(defun nix-eval (exp)
(assert (consp exp))
(ecase (car exp)
(:string (nix-string (cadr exp)))
(:list (apply #'nix-list (rest exp)))
(:funcall (apply #'nix-funcall (rest exp)))
(:attrs (nix-attrs (cdr exp)))
(:merge (apply #'nix-merge (cdr exp)))
(:symbol (nix-symbol (cadr exp)))))
(defun nix-string (object)
(format nil "\"~a\"" object))
(defun nixify-symbol (string)
(flet ((fix-special-chars (str)
(replace-regexes '("[+]$" "[+][/]" "[+]" "[.]" "[/]")
'("_plus" "_plus/" "_plus_" "_dot_" "_slash_")
str)))
(if (ppcre:scan "^[0-9]" string)
(str:concat "_" (fix-special-chars string))
(fix-special-chars string))))
(defun nix-symbol (object)
(nixify-symbol (format nil "~a" object)))
(defun nix-list (&rest things)
(format nil "[ ~{~A~^ ~} ]" (mapcar 'nix-eval things)))
(defvar *nix-attrs-depth* 0)
(defun nix-attrs (keyvals)
(let ((*nix-attrs-depth* (1+ *nix-attrs-depth*)))
(format
nil
(->> "{~%*depth*~{~{~A = ~A;~}~^~%*depth*~}~%*depth-1*}"
(str:replace-all "*depth*" (str:repeat *nix-attrs-depth* " "))
(str:replace-all "*depth-1*" (str:repeat (1- *nix-attrs-depth*) " ")))
(mapcar (lambda (keyval)
(let ((key (car keyval))
(val (cadr keyval)))
(list (nix-symbol key)
(nix-eval val))))
keyvals))))
(defun nix-funcall (fun &rest args)
(format nil "(~a ~{~a~^ ~})"
(nixify-symbol fun)
(mapcar 'nix-eval args)))
(defun nix-merge (a b)
(format nil "(~a // ~b)"
(nix-eval a)
(nix-eval b)))

View File

@ -1,24 +0,0 @@
(defsystem org.lispbuilds.nix
:class :package-inferred-system
:description "Utilities for importing ASDF systems into Nix"
:depends-on (
:alexandria
:str
:cl-ppcre
:sqlite
:dexador
:arrow-macros
:com.inuoe.jzon
:org.lispbuilds.nix/api
:org.lispbuilds.nix/repository/quicklisp
:org.lispbuilds.nix/database/sqlite
))
(register-system-packages
"cl-ppcre"
'(:ppcre))
(register-system-packages
"dexador"
'(:dex))

View File

@ -1,199 +0,0 @@
(defpackage org.lispbuilds.nix/repository/quicklisp
(:use :cl)
(:import-from :dex)
(:import-from :alexandria :read-file-into-string :ensure-list)
(:import-from :arrow-macros :->>)
(:import-from :str)
(:import-from
:org.lispbuilds.nix/database/sqlite
:sqlite-database
:init-db
:database-url
:init-file)
(:import-from
:org.lispbuilds.nix/api
:import-lisp-packages)
(:import-from
:org.lispbuilds.nix/util
:replace-regexes)
(:export :quicklisp-repository)
(:local-nicknames
(:json :com.inuoe.jzon)))
(in-package org.lispbuilds.nix/repository/quicklisp)
(defclass quicklisp-repository ()
((dist-url :initarg :dist-url
:reader dist-url
:initform (error "dist url required"))))
(defun clear-line ()
(write-char #\Return *error-output*)
(write-char #\Escape *error-output*)
(write-char #\[ *error-output*)
(write-char #\K *error-output*))
(defun status (&rest format-args)
(clear-line)
(apply #'format (list* *error-output* format-args))
(force-output *error-output*))
;; TODO: This should not know about the imported.nix file.
(defun init-tarball-hashes (database)
(status "no packages.sqlite - will pre-fill tarball hashes from ~A to save time~%"
(truename "imported.nix"))
(let* ((lines (uiop:read-file-lines "imported.nix"))
(lines (remove-if-not
(lambda (line)
(let ((trimmed (str:trim-left line)))
(or (str:starts-with-p "url = " trimmed)
(str:starts-with-p "sha256 = " trimmed))))
lines))
(lines (mapcar
(lambda (line)
(multiple-value-bind (whole groups)
(ppcre:scan-to-strings "\"\(.*\)\"" line)
(declare (ignore whole))
(svref groups 0)))
lines)))
(sqlite:with-open-database (db (database-url database))
(init-db db (init-file database))
(sqlite:with-transaction db
(loop while lines do
(sqlite:execute-non-query db
"insert or ignore into sha256(url,hash) values (?,?)"
(prog1 (first lines) (setf lines (rest lines)))
(prog1 (first lines) (setf lines (rest lines))))))
(status "OK, imported ~A hashes into DB.~%"
(sqlite:execute-single db
"select count(*) from sha256")))))
(defmethod import-lisp-packages ((repository quicklisp-repository)
(database sqlite-database))
;; If packages.sqlite is missing, we should populate the sha256
;; table to speed things up.
(unless (probe-file (database-url database))
(init-tarball-hashes database))
(let* ((db (sqlite:connect (database-url database)))
(systems-url (str:concat (dist-url repository) "systems.txt"))
(releases-url (str:concat (dist-url repository) "releases.txt"))
(systems-lines (rest (butlast (str:split #\Newline (dex:get systems-url)))))
(releases-lines (rest (butlast (str:split #\Newline (dex:get releases-url))))))
(flet ((sql-query (sql &rest params)
(apply #'sqlite:execute-to-list (list* db sql params))))
;; Ensure database schema
(init-db db (init-file database))
;; Prepare temporary tables for efficient access
(sql-query "create temp table if not exists quicklisp_system
(project, asd, name unique, deps)")
(sql-query "create temp table if not exists quicklisp_release
(project unique, url, size, md5, sha1, prefix not null, asds)")
(sqlite:with-transaction db
(dolist (line systems-lines)
(destructuring-bind (project asd name &rest deps)
(str:words line)
(sql-query
"insert or ignore into quicklisp_system values(?,?,?,?)"
project asd name (json:stringify (coerce deps 'vector))))))
(sqlite:with-transaction db
(dolist (line releases-lines)
(destructuring-bind (project url size md5 sha1 prefix &rest asds)
(str:words line)
(sql-query
"insert or ignore into quicklisp_release values(?,?,?,?,?,?,?)"
project url size md5 sha1 prefix (json:stringify (coerce
asds
'vector))))))
(sqlite:with-transaction db
;; Should these be temp tables, that then get queried by
;; system name? This looks like it uses a lot of memory.
(let ((systems
(sql-query
"with pkg as (
select
name, asd, url, deps,
ltrim(replace(prefix, r.project, ''), '-_') as version
from quicklisp_system s, quicklisp_release r
where s.project = r.project
)
select
name, version, asd, url,
(select json_group_array(
json_array(value, (select version from pkg where name=value))
)
from json_each(deps)) as deps
from pkg"
)))
;; First pass: insert system and source tarball informaton.
;; Can't insert dependency information, because this works
;; on system ids in the database and they don't exist
;; yet. Could it be better to just base dependencies on
;; names? But then ACID is lost.
(dolist (system systems)
(destructuring-bind (name version asd url deps) system
(declare (ignore deps))
(status "importing system '~a-~a'" name version)
(let ((hash (nix-prefetch-tarball url db)))
(sql-query
"insert or ignore into system(name,version,asd) values (?,?,?)"
name version asd)
(sql-query
"insert or ignore into sha256(url,hash) values (?,?)"
url hash)
(sql-query
"insert or ignore into src values
((select id from sha256 where url=?),
(select id from system where name=? and version=?))"
url name version))))
;; Second pass: connect the in-database systems with
;; dependency information
(dolist (system systems)
(destructuring-bind (name version asd url deps) system
(declare (ignore asd url))
(dolist (dep (coerce (json:parse deps) 'list))
(destructuring-bind (dep-name dep-version) (coerce dep 'list)
(if (eql dep-version 'NULL)
(warn "Bad data in Quicklisp: ~a has no version" dep-name)
(sql-query
"insert or ignore into dep values
((select id from system where name=? and version=?),
(select id from system where name=? and version=?))"
name version
dep-name dep-version))))))))))
(write-char #\Newline *error-output*))
(defun shell-command-to-string (cmd)
;; Clearing the library path is needed to prevent a bug, where the
;; called subprocess uses a different glibc than the SBCL process
;; is. In that case, the call to execve attempts to load the
;; libraries used by SBCL from LD_LIBRARY_PATH using a different
;; glibc than they expect, which errors out.
(let ((ld-library-path (uiop:getenv "LD_LIBRARY_PATH")))
(setf (uiop:getenv "LD_LIBRARY_PATH") "")
(unwind-protect
(uiop:run-program cmd :output '(:string :stripped t))
(setf (uiop:getenv "LD_LIBRARY_PATH") ld-library-path))))
(defun nix-prefetch-tarball (url db)
(restart-case
(compute-sha256 url db)
(try-again ()
:report "Try downloading again"
(nix-prefetch-tarball url db))))
(defun compute-sha256 (url db)
(or (sqlite:execute-single db "select hash from sha256 where url=?" url)
(let ((sha256 (shell-command-to-string (str:concat "nix-prefetch-url --unpack " url))))
sha256)))

View File

@ -1,16 +0,0 @@
(defpackage org.lispbuilds.nix/util
(:use :cl)
(:import-from :ppcre)
(:export
:replace-regexes))
(in-package org.lispbuilds.nix/util)
(defun replace-regexes (from to str)
(assert (= (length from) (length to)))
(if (null from)
str
(replace-regexes
(rest from)
(rest to)
(ppcre:regex-replace-all (first from) str (first to)))))

File diff suppressed because it is too large Load Diff

View File

@ -1,418 +0,0 @@
# TODO:
# - faster build by using lisp with preloaded asdf?
# - dont include java libs unless abcl?
# - dont use build-asdf-system to build lispWithPackages?
# - make the lisp packages overridable? (e.g. buildInputs glibc->musl)
# - build asdf with nix and use that instead of one shipped with impls
# (e.g. to fix build with clisp - does anyone use clisp?)
# - claspPackages ? (gotta package clasp with nix first)
# - hard one: remove unrelated sources ( of systems not being built)
# - figure out a less awkward way to patch sources
# (have to build from src directly for SLIME to work, so can't just patch sources in place)
{ pkgs, lib, stdenv, ... }:
let
inherit (lib)
length
filter
foldl
unique
id
concat
concatMap
mutuallyExclusive
findFirst
remove
setAttr
getAttr
hasAttr
attrNames
attrValues
filterAttrs
mapAttrs
splitString
concatStringsSep
concatMapStringsSep
replaceStrings
removeSuffix
hasInfix
optionalString
makeBinPath
makeLibraryPath
makeSearchPath
recurseIntoAttrs
dontRecurseIntoAttrs
;
inherit (builtins)
head
tail
elem
split
storeDir;
# Returns a flattened dependency tree without duplicates
# This is probably causing performance problems...
flattenedDeps = lispLibs:
let
toSet = list: builtins.listToAttrs (map (d: { name = d.pname; value = d; }) list);
toList = attrValues;
walk = acc: node:
if length node.lispLibs == 0
then acc
else builtins.foldl' walk (acc // toSet node.lispLibs) node.lispLibs;
in toList (walk {} { inherit lispLibs; });
# Stolen from python-packages.nix
# Actually no idea how this works
makeOverridableLispPackage = f: origArgs:
let
ff = f origArgs;
overrideWith = newArgs: origArgs // (if pkgs.lib.isFunction newArgs then newArgs origArgs else newArgs);
in
if builtins.isAttrs ff then (ff // {
overrideLispAttrs = newArgs: makeOverridableLispPackage f (overrideWith newArgs);
})
else if builtins.isFunction ff then {
overrideLispAttrs = newArgs: makeOverridableLispPackage f (overrideWith newArgs);
__functor = self: ff;
}
else ff;
#
# Wrapper around stdenv.mkDerivation for building ASDF systems.
#
build-asdf-system =
(makeOverridableLispPackage (
{ pname,
version,
src ? null,
patches ? [],
# Native libraries, will be appended to the library path
nativeLibs ? [],
# Java libraries for ABCL, will be appended to the class path
javaLibs ? [],
# Lisp dependencies
# these should be packages built with `build-asdf-system`
lispLibs ? [],
# Lisp command to run buildScript
lisp,
# Some libraries have multiple systems under one project, for
# example, cffi has cffi-grovel, cffi-toolchain etc. By
# default, only the `pname` system is build.
#
# .asd's not listed in `systems` are removed in
# installPhase. This prevents asdf from referring to uncompiled
# systems on run time.
#
# Also useful when the pname is differrent than the system name,
# such as when using reverse domain naming.
systems ? [ pname ],
# The .asd files that this package provides
asds ? systems,
# Other args to mkDerivation
...
} @ args:
let
# A little slow for big dependency graphs.
# How to make it faster?
# Maybe do it in the buildScript in Common Lisp or Bash, instead
# of here with Nix?
libsFlat = flattenedDeps lispLibs;
in stdenv.mkDerivation (rec {
inherit pname version nativeLibs javaLibs lispLibs lisp systems asds;
# When src is null, we are building a lispWithPackages and only
# want to make use of the dependency environment variables
# generated by build-asdf-system
dontUnpack = src == null;
# TODO: Do the propagation like for lisp, native and java like this:
# https://github.com/teu5us/nix-lisp-overlay/blob/e30dafafa5c1b9a5b0ccc9aaaef9d285d9f0c46b/pkgs/development/lisp-modules/setup-hook.sh
# Then remove the "echo >> nix-drvs" from buildScript
# Tell asdf where to find system definitions of lisp dependencies.
#
# The "//" ending is important as it makes asdf recurse into
# subdirectories when searching for .asd's. This is to support
# projects where .asd's aren't in the root directory.
CL_SOURCE_REGISTRY = makeSearchPath "/" libsFlat;
# Tell lisp where to find native dependencies
#
# Normally generated from lispLibs, but LD_LIBRARY_PATH as a
# derivation attr itself can be used as an extension point when
# the libs are not in a '/lib' subdirectory
LD_LIBRARY_PATH =
let
libs = concatMap (x: x.nativeLibs) libsFlat;
paths = filter (x: x != "") (map (x: x.LD_LIBRARY_PATH) libsFlat);
path =
makeLibraryPath libs
+ optionalString (length paths != 0) ":"
+ concatStringsSep ":" paths;
in concatStringsSep ":" (unique (splitString ":" path));
# Java libraries For ABCL
CLASSPATH = makeSearchPath "share/java/*" (concatMap (x: x.javaLibs) libsFlat);
# Portable script to build the systems.
#
# `lisp` must evaluate this file then exit immediately. For
# example, SBCL's --script flag does just that.
#
# NOTE:
# Every other library worked fine with asdf:compile-system in
# buildScript.
#
# cl-syslog, for some reason, signals that CL-SYSLOG::VALID-SD-ID-P
# is undefined with compile-system, but works perfectly with
# load-system. Strange.
buildScript = pkgs.writeText "build-${pname}.lisp" ''
(require :asdf)
(dolist (s '(${concatStringsSep " " systems}))
(asdf:load-system s))
'';
buildPhase = optionalString (src != null) ''
# In addition to lisp dependencies, make asdf see the .asd's
# of the systems being built
#
# *Append* src since `lispLibs` can provide .asd's that are
# also in `src` but are not in `systems` (that is, the .asd's
# that will be deleted in installPhase). We don't want to
# rebuild them, but to load them from lispLibs.
#
# NOTE: It's important to read files from `src` instead of
# from pwd to get go-to-definition working with SLIME
export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$src//
# Similiarily for native deps
export LD_LIBRARY_PATH=${makeLibraryPath nativeLibs}:$LD_LIBRARY_PATH
export CLASSPATH=${makeSearchPath "share/java/*" javaLibs}:$CLASSPATH
# Make asdf compile from `src` to pwd and load `lispLibs`
# from storeDir. Otherwise it could try to recompile lisp deps.
export ASDF_OUTPUT_TRANSLATIONS="$src:$(pwd):${storeDir}:${storeDir}"
# track lisp dependencies for graph generation
# TODO: Do the propagation like for lisp, native and java like this:
# https://github.com/teu5us/nix-lisp-overlay/blob/e30dafafa5c1b9a5b0ccc9aaaef9d285d9f0c46b/pkgs/development/lisp-modules/setup-hook.sh
# Then remove the "echo >> nix-drvs" from buildScript
echo $lispLibs >> __nix-drvs
# Finally, compile the systems
${lisp} $buildScript
'';
# Copy compiled files to store
#
# Make sure to include '$' in regex to prevent skipping
# stuff like 'iolib.asdf.asd' for system 'iolib.asd'
#
# Same with '/': `local-time.asd` for system `cl-postgres+local-time.asd`
installPhase =
let
mkSystemsRegex = systems:
concatMapStringsSep "\\|" (replaceStrings ["." "+"] ["[.]" "[+]"]) systems;
in
''
mkdir -pv $out
cp -r * $out
# Remove all .asd files except for those in `systems`.
find $out -name "*.asd" \
| grep -v "/\(${mkSystemsRegex systems}\)\.asd$" \
| xargs rm -fv || true
'';
# Not sure if it's needed, but caused problems with SBCL
# save-lisp-and-die binaries in the past
dontStrip = true;
dontFixup = true;
} // (args // {
src = if builtins.length (args.patches or []) > 0
then pkgs.applyPatches { inherit (args) src patches; }
else args.src;
patches = [];
# make sure that propagated build-inputs from lispLibs are propagated
propagatedBuildInputs = lib.unique
(builtins.concatLists
(lib.catAttrs "propagatedBuildInputs"
(builtins.concatLists [[args] lispLibs nativeLibs javaLibs])));
}))));
# Build the set of lisp packages using `lisp`
# These packages are defined manually for one reason or another:
# - The library is not in quicklisp
# - The library that is in quicklisp is broken
# - Special build procedure such as cl-unicode, asdf
#
# These Probably could be done even in ql.nix
# - Want to pin a specific commit
# - Want to apply custom patches
#
# They can use the auto-imported quicklisp packages as dependencies,
# but some of those don't work out of the box.
#
# E.g if a QL package depends on cl-unicode it won't build out of
# the box. The dependency has to be rewritten using the manually
# fixed cl-unicode.
#
# This is done by generating a 'fixed' set of Quicklisp packages by
# calling quicklispPackagesFor with the right `fixup`.
commonLispPackagesFor = lisp:
let
build-asdf-system' = body: build-asdf-system (body // { inherit lisp; });
in import ./packages.nix {
inherit pkgs;
inherit lisp;
inherit quicklispPackagesFor;
inherit fixupFor;
build-asdf-system = build-asdf-system';
};
# Build the set of packages imported from quicklisp using `lisp`
quicklispPackagesFor = { lisp, fixup ? lib.id, build ? build-asdf-system }:
let
build-asdf-system' = body: build (body // {
inherit lisp;
});
in import ./ql.nix {
inherit pkgs;
inherit fixup;
build-asdf-system = build-asdf-system';
};
# Rewrite deps of pkg to use manually defined packages
#
# The purpose of manual packages is to customize one package, but
# then it has to be propagated everywhere for it to make sense and
# have consistency in the package tree.
fixupFor = manualPackages: qlPkg:
assert (lib.isAttrs qlPkg && !lib.isDerivation qlPkg);
let
# Make it possible to reuse generated attrs without recursing into oblivion
packages = (lib.filterAttrs (n: v: n != qlPkg.pname) manualPackages);
substituteLib = pkg:
if lib.hasAttr pkg.pname packages
then packages.${pkg.pname}
else pkg;
pkg = substituteLib qlPkg;
in pkg // { lispLibs = map substituteLib pkg.lispLibs; };
makeAttrName = str:
removeSuffix
"_"
(replaceStrings
["+" "." "/"]
["_plus_" "_dot_" "_slash_"]
str);
oldMakeWrapper = pkgs.runCommand "make-wrapper.sh" {} ''
substitute ${./old-make-wrapper.sh} $out \
--replace @shell@ ${pkgs.bash}/bin/bash
'';
# Creates a lisp wrapper with `packages` installed
#
# `packages` is a function that takes `clpkgs` - a set of lisp
# packages - as argument and returns the list of packages to be
# installed
lispWithPackagesInternal = clpkgs: packages:
# FIXME just use flattenedDeps instead
(build-asdf-system rec {
lisp = (head (lib.attrValues clpkgs)).lisp;
# See dontUnpack in build-asdf-system
src = null;
pname = baseNameOf (head (split " " lisp));
version = "with-packages";
lispLibs = packages clpkgs;
systems = [];
}).overrideAttrs(o: {
installPhase = ''
# The recent version of makeWrapper causes breakage. For more info see
# https://github.com/Uthar/nix-cl/issues/2
source ${oldMakeWrapper}
mkdir -pv $out/bin
makeWrapper \
${head (split " " o.lisp)} \
$out/bin/${baseNameOf (head (split " " o.lisp))} \
--prefix CL_SOURCE_REGISTRY : "${o.CL_SOURCE_REGISTRY}" \
--prefix ASDF_OUTPUT_TRANSLATIONS : ${concatStringsSep "::" (flattenedDeps o.lispLibs)}: \
--prefix LD_LIBRARY_PATH : "${o.LD_LIBRARY_PATH}" \
--prefix LD_LIBRARY_PATH : "${makeLibraryPath o.nativeLibs}" \
--prefix CLASSPATH : "${o.CLASSPATH}" \
--prefix CLASSPATH : "${makeSearchPath "share/java/*" o.javaLibs}" \
--prefix PATH : "${makeBinPath (o.buildInputs or [])}" \
--prefix PATH : "${makeBinPath (o.propagatedBuildInputs or [])}"
'';
});
lispWithPackages = lisp:
let
packages = lispPackagesFor lisp;
in lispWithPackagesInternal packages;
lispPackagesFor = lisp:
let
packages = commonLispPackagesFor lisp;
qlPackages = quicklispPackagesFor {
inherit lisp;
fixup = fixupFor packages;
};
in qlPackages // packages;
commonLispPackages = rec {
inherit
build-asdf-system
lispWithPackagesInternal
lispPackagesFor
lispWithPackages;
# TODO: uncomment clasp when clasp 1.0.0 is packaged
# There's got to be a better way than this...
# The problem was that with --load everywhere, some
# implementations didn't exit with 0 on compilation failure
# Maybe a handler-case in buildScript?
sbcl = "${pkgs.sbcl}/bin/sbcl --script";
ecl = "${pkgs.ecl}/bin/ecl --shell";
abcl = ''${pkgs.abcl}/bin/abcl --batch --eval "(load \"$buildScript\")"'';
ccl = ''${pkgs.ccl}/bin/ccl --batch --eval "(load \"$buildScript\")" --'';
# clasp = ''${pkgs.clasp}/bin/clasp --non-interactive --quit --load'';
# Manually defined packages shadow the ones imported from quicklisp
sbclPackages = recurseIntoAttrs (lispPackagesFor sbcl);
eclPackages = dontRecurseIntoAttrs (lispPackagesFor ecl);
abclPackages = dontRecurseIntoAttrs (lispPackagesFor abcl);
cclPackages = dontRecurseIntoAttrs (lispPackagesFor ccl);
# claspPackages = lispPackagesFor clasp;
sbclWithPackages = lispWithPackages sbcl;
eclWithPackages = lispWithPackages ecl;
abclWithPackages = lispWithPackages abcl;
cclWithPackages = lispWithPackages ccl;
# claspWithPackages = lispWithPackages clasp;
};
in commonLispPackages

View File

@ -1,155 +0,0 @@
# Assert that FILE exists and is executable
#
# assertExecutable FILE
assertExecutable() {
local file="$1"
[[ -f "$file" && -x "$file" ]] || \
die "Cannot wrap '$file' because it is not an executable file"
}
# construct an executable file that wraps the actual executable
# makeWrapper EXECUTABLE OUT_PATH ARGS
# ARGS:
# --argv0 NAME : set name of executed process to NAME
# (otherwise its called …-wrapped)
# --set VAR VAL : add VAR with value VAL to the executables
# environment
# --set-default VAR VAL : like --set, but only adds VAR if not already set in
# the environment
# --unset VAR : remove VAR from the environment
# --run COMMAND : run command before the executable
# --add-flags FLAGS : add FLAGS to invocation of executable
# --prefix ENV SEP VAL : suffix/prefix ENV with VAL, separated by SEP
# --suffix
# --prefix-each ENV SEP VALS : like --prefix, but VALS is a list
# --suffix-each ENV SEP VALS : like --suffix, but VALS is a list
# --prefix-contents ENV SEP FILES : like --suffix-each, but contents of FILES
# are read first and used as VALS
# --suffix-contents
makeWrapper() {
local original="$1"
local wrapper="$2"
local params varName value command separator n fileNames
local argv0 flagsBefore flags
assertExecutable "$original"
mkdir -p "$(dirname "$wrapper")"
echo "#! @shell@ -e" > "$wrapper"
params=("$@")
for ((n = 2; n < ${#params[*]}; n += 1)); do
p="${params[$n]}"
if [[ "$p" == "--set" ]]; then
varName="${params[$((n + 1))]}"
value="${params[$((n + 2))]}"
n=$((n + 2))
echo "export $varName=${value@Q}" >> "$wrapper"
elif [[ "$p" == "--set-default" ]]; then
varName="${params[$((n + 1))]}"
value="${params[$((n + 2))]}"
n=$((n + 2))
echo "export $varName=\${$varName-${value@Q}}" >> "$wrapper"
elif [[ "$p" == "--unset" ]]; then
varName="${params[$((n + 1))]}"
n=$((n + 1))
echo "unset $varName" >> "$wrapper"
elif [[ "$p" == "--run" ]]; then
command="${params[$((n + 1))]}"
n=$((n + 1))
echo "$command" >> "$wrapper"
elif [[ ("$p" == "--suffix") || ("$p" == "--prefix") ]]; then
varName="${params[$((n + 1))]}"
separator="${params[$((n + 2))]}"
value="${params[$((n + 3))]}"
n=$((n + 3))
if test -n "$value"; then
if test "$p" = "--suffix"; then
echo "export $varName=\$$varName\${$varName:+${separator@Q}}${value@Q}" >> "$wrapper"
else
echo "export $varName=${value@Q}\${$varName:+${separator@Q}}\$$varName" >> "$wrapper"
fi
fi
elif [[ "$p" == "--prefix-each" ]]; then
varName="${params[$((n + 1))]}"
separator="${params[$((n + 2))]}"
values="${params[$((n + 3))]}"
n=$((n + 3))
for value in $values; do
echo "export $varName=${value@Q}\${$varName:+${separator@Q}}\$$varName" >> "$wrapper"
done
elif [[ "$p" == "--suffix-each" ]]; then
varName="${params[$((n + 1))]}"
separator="${params[$((n + 2))]}"
values="${params[$((n + 3))]}"
n=$((n + 3))
for value in $values; do
echo "export $varName=\$$varName\${$varName:+$separator}${value@Q}" >> "$wrapper"
done
elif [[ ("$p" == "--suffix-contents") || ("$p" == "--prefix-contents") ]]; then
varName="${params[$((n + 1))]}"
separator="${params[$((n + 2))]}"
fileNames="${params[$((n + 3))]}"
n=$((n + 3))
for fileName in $fileNames; do
contents="$(cat "$fileName")"
if test "$p" = "--suffix-contents"; then
echo "export $varName=\$$varName\${$varName:+$separator}${contents@Q}" >> "$wrapper"
else
echo "export $varName=${contents@Q}\${$varName:+$separator}\$$varName" >> "$wrapper"
fi
done
elif [[ "$p" == "--add-flags" ]]; then
flags="${params[$((n + 1))]}"
n=$((n + 1))
flagsBefore="$flagsBefore $flags"
elif [[ "$p" == "--argv0" ]]; then
argv0="${params[$((n + 1))]}"
n=$((n + 1))
else
die "makeWrapper doesn't understand the arg $p"
fi
done
echo exec ${argv0:+-a \"$argv0\"} \""$original"\" \
"$flagsBefore" '"$@"' >> "$wrapper"
chmod +x "$wrapper"
}
addSuffix() {
suffix="$1"
shift
for name in "$@"; do
echo "$name$suffix"
done
}
filterExisting() {
for fn in "$@"; do
if test -e "$fn"; then
echo "$fn"
fi
done
}
# Syntax: wrapProgram <PROGRAM> <MAKE-WRAPPER FLAGS...>
wrapProgram() {
local prog="$1"
local hidden
assertExecutable "$prog"
hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped
while [ -e "$hidden" ]; do
hidden="${hidden}_"
done
mv "$prog" "$hidden"
# Silence warning about unexpanded $0:
# shellcheck disable=SC2016
makeWrapper "$hidden" "$prog" --argv0 '$0' "${@:2}"
}

View File

@ -1,336 +0,0 @@
{ build-asdf-system, lisp, quicklispPackagesFor, fixupFor, pkgs, ... }:
let
inherit (pkgs.lib)
head
makeLibraryPath
makeSearchPath
setAttr
hasAttr
optionals
hasSuffix
splitString
;
# Used by builds that would otherwise attempt to write into storeDir.
#
# Will run build two times, keeping all files created during the
# first run, exept the FASL's. Then using that directory tree as the
# source of the second run.
#
# E.g. cl-unicode creating .txt files during compilation
build-with-compile-into-pwd = args:
let
build = (build-asdf-system (args // { version = args.version + "-build"; }))
.overrideAttrs(o: {
buildPhase = with builtins; ''
mkdir __fasls
export LD_LIBRARY_PATH=${makeLibraryPath o.nativeLibs}:$LD_LIBRARY_PATH
export CLASSPATH=${makeSearchPath "share/java/*" o.javaLibs}:$CLASSPATH
export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$(pwd)//
export ASDF_OUTPUT_TRANSLATIONS="$(pwd):$(pwd)/__fasls:${storeDir}:${storeDir}"
${o.lisp} ${o.buildScript}
'';
installPhase = ''
mkdir -pv $out
rm -rf __fasls
cp -r * $out
'';
});
in build-asdf-system (args // {
# Patches are already applied in `build`
patches = [];
src = build;
});
# A little hacky
isJVM = hasSuffix "abcl" (head (splitString " " lisp));
# Makes it so packages imported from Quicklisp can be re-used as
# lispLibs ofpackages in this file.
ql = quicklispPackagesFor { inherit lisp; fixup = fixupFor packages; };
packages = rec {
asdf = build-with-compile-into-pwd {
pname = "asdf";
version = "3.3.5.3";
src = pkgs.fetchzip {
url = "https://gitlab.common-lisp.net/asdf/asdf/-/archive/3.3.5.3/asdf-3.3.5.3.tar.gz";
sha256 = "0aw200awhg58smmbdmz80bayzmbm1a6547gv0wmc8yv89gjqldbv";
};
systems = [ "asdf" "uiop" ];
};
uiop = asdf.overrideLispAttrs(o: {
pname = "uiop";
});
cffi = let
jna = pkgs.fetchMavenArtifact {
groupId = "net.java.dev.jna";
artifactId = "jna";
version = "5.9.0";
sha256 = "0qbis8acv04fi902qzak1mbagqaxcsv2zyp7b8y4shs5nj0cgz7a";
};
in build-asdf-system {
src = pkgs.fetchzip {
url = "http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz";
sha256 = "17ryim4xilb1rzxydfr7595dnhqkk02lmrbkqrkvi9091shi4cj3";
};
version = "0.24.1";
pname = "cffi";
lispLibs = with ql; [
alexandria
babel
trivial-features
];
javaLibs = optionals isJVM [ jna ];
};
cffi-libffi = ql.cffi-libffi.overrideLispAttrs (o: {
src = pkgs.fetchzip {
url = "https://github.com/cffi/cffi/archive/3f842b92ef808900bf20dae92c2d74232c2f6d3a.tar.gz";
sha256 = "1jilvmbbfrmb23j07lwmkbffc6r35wnvas5s4zjc84i856ccclm2";
};
patches = [ ./patches/cffi-libffi-darwin-ffi-h.patch ];
});
cl-unicode = build-with-compile-into-pwd {
pname = "cl-unicode";
version = "0.1.6";
src = pkgs.fetchzip {
url = "https://github.com/edicl/cl-unicode/archive/refs/tags/v0.1.6.tar.gz";
sha256 = "0ykx2s9lqfl74p1px0ik3l2izd1fc9jd1b4ra68s5x34rvjy0hza";
};
systems = [ "cl-unicode" ];
lispLibs = with ql; [
cl-ppcre
flexi-streams
];
};
jzon = build-asdf-system {
src = pkgs.fetchzip {
url = "https://github.com/Zulu-Inuoe/jzon/archive/6b201d4208ac3f9721c461105b282c94139bed29.tar.gz";
sha256 = "01d4a78pjb1amx5amdb966qwwk9vblysm1li94n3g26mxy5zc2k3";
};
version = "0.0.0-20210905-6b201d4208";
pname = "jzon";
lispLibs = [
ql.closer-mop
];
systems = [ "com.inuoe.jzon" ];
};
cl-notify = build-asdf-system {
pname = "cl-notify";
version = "20080904-138ca7038";
src = pkgs.fetchzip {
url = "https://repo.or.cz/cl-notify.git/snapshot/138ca703861f4a1fbccbed557f92cf4d213668a1.tar.gz";
sha256 = "0k6ns6fzvjcbpsqgx85r4g5m25fvrdw9481i9vyabwym9q8bbqwx";
};
lispLibs = [
cffi
];
nativeLibs = [
pkgs.libnotify
];
};
cl-liballegro-nuklear = build-with-compile-into-pwd {
inherit (ql.cl-liballegro-nuklear) pname version src;
nativeBuildInputs = [ pkgs.allegro5 ];
nativeLibs = [ pkgs.allegro5 ];
lispLibs = ql.cl-liballegro-nuklear.lispLibs ++ [ ql.cl-liballegro ];
patches = [ ./patches/cl-liballegro-nuklear-missing-dll.patch ];
};
tuple = build-asdf-system {
pname = "tuple";
version = "b74bd067d";
src = pkgs.fetchzip {
url = "https://fossil.galkowski.xyz/tuple/tarball/b74bd067d4533ac0/tuple.tar.gz";
sha256 = "0dk356vkv6kwwcmc3j08x7143549m94rd66rpkzq8zkb31cg2va8";
};
};
cl-tar-file = build-asdf-system {
pname = "cl-tar-file";
version = "v0.2.1";
src = pkgs.fetchzip {
url = let
rev = "0c10bc82f14702c97a26dc25ce075b5d3a2347d1";
in "https://gitlab.common-lisp.net/cl-tar/cl-tar-file/-/archive/${rev}/cl-tar-file-${rev}.tar.gz";
sha256 = "0i8j05fkgdqy4c4pqj0c68sh4s3klpx9kc5wp73qwzrl3xqd2svy";
};
lispLibs = with ql; [
alexandria
babel
trivial-gray-streams
_40ants-doc
salza2
chipz
flexi-streams
parachute
];
systems = [ "tar-file" "tar-file/test" ];
};
cl-tar = build-asdf-system {
pname = "cl-tar";
version = "v0.2.1";
src = pkgs.fetchzip {
url = let
rev = "7c6e07a10c93d9e311f087b5f6328cddd481669a";
in "https://gitlab.common-lisp.net/cl-tar/cl-tar/-/archive/${rev}/cl-tar-${rev}.tar.gz";
sha256 = "0wp23cs3i6a89dibifiz6559la5nk58d1n17xvbxq4nrl8cqsllf";
};
lispLibs = with ql; [
alexandria
babel
local-time
split-sequence
_40ants-doc
parachute
osicat
] ++ [ cl-tar-file ];
systems = [
"tar"
"tar/common-extract"
"tar/simple-extract"
"tar/extract"
"tar/create"
"tar/docs"
"tar/test"
"tar/create-test"
"tar/extract-test"
"tar/simple-extract-test"
];
};
lessp = build-asdf-system {
pname = "lessp";
version = "0.2-f8a9e4664";
src = pkgs.fetchzip {
url = "https://github.com/facts-db/cl-lessp/archive/632217602b85b679e8d420654a0aa39e798ca3b5.tar.gz";
sha256 = "0i3ia14dzqwjpygd0zn785ff5vqnnmkn75psfpyx0ni3jr71lkq9";
};
};
rollback = build-asdf-system {
pname = "rollback";
version = "0.1-5d3f21fda";
src = pkgs.fetchzip {
url = "https://github.com/facts-db/cl-rollback/archive/5d3f21fda8f04f35c5e9d20ee3b87db767915d15.tar.gz";
sha256 = "12dpxsbm2al633y87i8p784k2dn4bbskz6sl40v9f5ljjmjqjzxf";
};
};
facts = build-asdf-system {
pname = "facts";
version = "0.1-632217602";
src = pkgs.fetchzip {
url = "https://github.com/facts-db/cl-lessp/archive/632217602b85b679e8d420654a0aa39e798ca3b5.tar.gz";
sha256 = "09z1vwzjm7hlb529jl3hcjnfd11gh128lmdg51im7ar4jv4746iw";
};
lispLibs = [ lessp rollback ] ++ [ ql.local-time ];
};
cl-fuse = build-with-compile-into-pwd {
inherit (ql.cl-fuse) pname version src lispLibs;
nativeBuildInputs = [ pkgs.fuse ];
nativeLibs = [ pkgs.fuse ];
};
cl-containers = build-asdf-system {
inherit (ql.cl-containers) pname version src;
lispLibs = ql.cl-containers.lispLibs ++ [ ql.moptilities ];
systems = [ "cl-containers" "cl-containers/with-moptilities" ];
};
swank = build-with-compile-into-pwd {
inherit (ql.swank) pname version src lispLibs;
patches = [ ./patches/swank-pure-paths.patch ];
postConfigure = ''
substituteAllInPlace swank-loader.lisp
'';
};
clx-truetype = build-asdf-system {
pname = "clx-truetype";
version = "20160825-git";
src = pkgs.fetchzip {
url = "http://beta.quicklisp.org/archive/clx-truetype/2016-08-25/clx-truetype-20160825-git.tgz";
sha256 = "079hyp92cjkdfn6bhkxsrwnibiqbz4y4af6nl31lzw6nm91j5j37";
};
lispLibs = with ql; [
alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf
cl-store cl-vectors clx trivial-features zpb-ttf
];
};
mathkit = build-asdf-system {
inherit (ql.mathkit) pname version src asds lisp;
lispLibs = ql.mathkit.lispLibs ++ [ ql.sb-cga ];
};
nyxt-gtk = build-asdf-system {
inherit (ql.nyxt) pname lisp;
version = "2.2.4";
lispLibs = ql.nyxt.lispLibs ++ (with ql; [
cl-cffi-gtk cl-webkit2 mk-string-metrics
]);
src = pkgs.fetchzip {
url = "https://github.com/atlas-engineer/nyxt/archive/2.2.4.tar.gz";
sha256 = "12l7ir3q29v06jx0zng5cvlbmap7p709ka3ik6x29lw334qshm9b";
};
nativeBuildInputs = [ pkgs.makeWrapper ];
buildInputs = [
# needed for GSETTINGS_SCHEMAS_PATH
pkgs.gsettings-desktop-schemas pkgs.glib pkgs.gtk3
# needed for XDG_ICON_DIRS
pkgs.gnome.adwaita-icon-theme
];
buildScript = pkgs.writeText "build-nyxt.lisp" ''
(require :asdf)
(asdf:load-system :nyxt/gtk-application)
(sb-ext:save-lisp-and-die "nyxt" :executable t
#+sb-core-compression :compression
#+sb-core-compression t
:toplevel #'nyxt:entry-point)
'';
# Run with WEBKIT_FORCE_SANDBOX=0 if getting a runtime error in webkitgtk-2.34.4
installPhase = ql.nyxt.installPhase + ''
rm -v $out/nyxt
mkdir -p $out/bin
cp -v nyxt $out/bin
wrapProgram $out/bin/nyxt \
--prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH \
--prefix XDG_DATA_DIRS : $XDG_ICON_DIRS \
--prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
--prefix GIO_EXTRA_MODULES ":" ${pkgs.dconf.lib}/lib/gio/modules/ \
--prefix GIO_EXTRA_MODULES ":" ${pkgs.glib-networking}/lib/gio/modules/
'';
};
nyxt = nyxt-gtk;
ltk = ql.ltk.overrideLispAttrs (o: {
src = pkgs.fetchzip {
url = "https://github.com/uthar/ltk/archive/f19162e76d6c7c2f51bd289b811d9ba20dd6555e.tar.gz";
sha256 = "0mzikv4abq9yqlj6dsji1wh34mjizr5prv6mvzzj29z1485fh1bj";
};
version = "f19162e76";
});
};
in packages

View File

@ -1,14 +0,0 @@
--- a/libffi/libffi-types.lisp
+++ b/libffi/libffi-types.lisp
@@ -43,9 +43,6 @@
(pkg-config-cflags "libffi" :optional t)
-#+darwin
-(include "ffi/ffi.h")
-#-darwin
(include "ffi.h")
(cenum status
Diff finished. Sun Nov 13 00:23:10 2022

View File

@ -1,16 +0,0 @@
--- a/src/ffi/grovel/grovel-freetype.h
+++ b/src/ffi/grovel/grovel-freetype.h
@@ -2,7 +2,7 @@
#include <ft2build.h>
#include FT_FREETYPE_H
-#include <ftsystem.h>
-#include <fttypes.h>
-#include <ftlist.h>
-#include <ftimage.h>
+#include <freetype/ftsystem.h>
+#include <freetype/fttypes.h>
+#include <freetype/ftlist.h>
+#include <freetype/ftimage.h>
Diff finished. Mon Nov 14 22:41:57 2022

View File

@ -1,17 +0,0 @@
Fix system not loading due to:
Unhandled CFFI:LOAD-FOREIGN-LIBRARY-ERROR
Unable to load foreign library (LIBALLEGRO-NUKLEAR).
Error opening shared object "/build/source/src/liballegro_nuklear.so":
/build/source/src/liballegro_nuklear.so: undefined symbol: al_draw_ellipse.
--- a/cl-liballegro-nuklear.asd
+++ b/cl-liballegro-nuklear.asd
@@ -12,7 +12,7 @@
:description "CFFI wrapper for the Nuklear IM GUI library with liballegro backend, to be used with cl-liballegro."
:author "Andrew Kravchuk <awkravchuk@gmail.com>"
:license "MIT"
- :depends-on (:cffi :cffi-libffi :trivial-features)
+ :depends-on (:cl-liballegro :cffi :cffi-libffi :trivial-features)
:pathname "src"
:serial t
:components ((:makefile "Makefile")

View File

@ -1,27 +0,0 @@
From 2040fcab5a7be2f28add46a1412bef62ac5ccf11 Mon Sep 17 00:00:00 2001
From: Maximilian Marx <mmarx@wh2.tu-dresden.de>
Date: Thu, 24 Nov 2022 20:00:33 +0100
Subject: [PATCH] Use glucose binary from PATH if present
---
src/package.lisp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/package.lisp b/src/package.lisp
index b6e26ac..bdb2581 100644
--- a/src/package.lisp
+++ b/src/package.lisp
@@ -13,7 +13,9 @@
(defvar *glucose-home* (asdf:system-relative-pathname :cl-sat.glucose "glucose-syrup/"))
(defun glucose-binary (&optional (*glucose-home* *glucose-home*))
- (merge-pathnames "simp/glucose_static" *glucose-home*))
+ (if (trivial-package-manager:which "glucose")
+ "glucose"
+ (merge-pathnames "simp/glucose_static" *glucose-home*)))
(defmethod solve ((input pathname) (solver (eql :glucose)) &rest options &key debug &allow-other-keys)
(remf options :debug)
--
2.36.2

View File

@ -1,21 +0,0 @@
--- a/magicl.asd
+++ b/magicl.asd
@@ -143,6 +143,7 @@
(shared-object (make-pathname :type #+darwin "dylib" #-darwin "so"
:name "libexpokit"
:defaults fortran-file)))
+ (unless (probe-file (nn shared-object))
(uiop:run-program
(list "gfortran" "-fPIC" "-std=legacy"
"-c"
@@ -155,7 +156,7 @@
(nn object-file)
#+darwin "-lblas"
#+darwin "-llapack"))
- (delete-file object-file))))
+ (delete-file object-file)))))
(asdf:defsystem #:magicl/ext-expokit
Diff finished. Mon Oct 10 22:03:54 2022

View File

@ -1,28 +0,0 @@
Prevent swank from attempting write into storeDir
--- a/swank-loader.lisp
+++ b/swank-loader.lisp
@@ -162,7 +162,7 @@
,(unique-dir-name)))
(user-homedir-pathname)))
-(defvar *fasl-directory* (default-fasl-dir)
+(defvar *fasl-directory* #P"@out@/fasl/"
"The directory where fasl files should be placed.")
(defun binary-pathname (src-pathname binary-dir)
@@ -284,12 +284,7 @@
(contrib-dir src-dir))))
(defun delete-stale-contrib-fasl-files (swank-files contrib-files fasl-dir)
- (let ((newest (reduce #'max (mapcar #'file-write-date swank-files))))
- (dolist (src contrib-files)
- (let ((fasl (binary-pathname src fasl-dir)))
- (when (and (probe-file fasl)
- (<= (file-write-date fasl) newest))
- (delete-file fasl))))))
+ (declare (ignore swank-files contrib-files fasl-dir)))
(defun compile-contribs (&key (src-dir (contrib-dir *source-directory*))
(fasl-dir (contrib-dir *fasl-directory*))
Diff finished. Sat Jan 22 23:57:27 2022

View File

@ -1,6 +0,0 @@
(require :asdf)
(pushnew (truename "./import") asdf:*central-registry*)
(asdf:load-system :org.lispbuilds.nix)
(load "./import/main.lisp")
(org.lispbuilds.nix/main::main)

View File

@ -1,239 +0,0 @@
{ pkgs, build-asdf-system, fixup ? pkgs.lib.id, ... }:
with pkgs;
with lib;
with lib.lists;
with lib.strings;
let
# FIXME: automatically add nativeLibs based on conditions signalled
# Try to keep this list sorted
extras = {
cffi-libffi = pkg: {
nativeBuildInputs = [ libffi ];
nativeLibs = [ libffi ];
};
"cl+ssl" = pkg: {
nativeLibs = [ openssl_1_1 ];
};
"cl-ana.hdf-cffi" = pkg: {
nativeBuildInputs = [ pkgs.hdf5 ];
nativeLibs = [ pkgs.hdf5 ];
NIX_LDFLAGS = [ "-lhdf5" ];
};
cl-async-ssl = pkg: {
nativeLibs = [ openssl_1_1 ];
};
cl-cffi-gtk-glib = pkg: {
nativeLibs = [ glib ];
};
cl-cffi-gtk-cairo = pkg: {
nativeLibs = [ cairo ];
};
cl-cffi-gtk-gdk = pkg: {
nativeLibs = [ gtk3 ];
};
cl-cffi-gtk-gdk-pixbuf = pkg: {
nativeLibs = [ gdk-pixbuf ];
};
cl-cffi-gtk-pango = pkg: {
nativeLibs = [ pango ];
};
cl-cairo2 = pkg: {
nativeLibs = [ cairo ];
};
cl-cairo2-xlib = pkg: {
nativeLibs = [ gtk2-x11 ];
};
cl-devil = pkg: {
nativeBuildInputs = [ pkgs.libdevil ];
nativeLibs = [ pkgs.libdevil ];
};
cl-freeimage = pkg: {
nativeLibs = [ freeimage ];
};
cl-freetype2 = pkg: {
nativeLibs = [ freetype ];
nativeBuildInputs = [ freetype ];
patches = [ ./patches/cl-freetype2-fix-grovel-includes.patch ];
};
cl-glfw = pkg: {
nativeLibs = [ glfw ];
};
cl-glfw-opengl-core = pkg: {
nativeLibs = [ libGL ];
};
cl-glfw3 = pkg: {
nativeLibs = [ glfw ];
};
cl-glu = pkg: {
nativeLibs = [ libGLU ];
};
cl-glut = pkg: {
nativeLibs = [ freeglut ];
};
cl-gobject-introspection = pkg: {
nativeLibs = [ glib gobject-introspection ];
};
cl-gtk2-gdk = pkg: {
nativeLibs = [ gtk2-x11 ];
};
cl-gtk2-glib = pkg: {
nativeLibs = [ glib ];
};
cl-gtk2-pango = pkg: {
nativeLibs = [ pango ];
};
cl-liballegro = pkg: {
# build doesnt fail without this, but fails on runtime
# weird...
nativeLibs = [ allegro5 ];
};
cl-libuv = pkg: {
nativeBuildInputs = [ libuv ];
nativeLibs = [ libuv ];
};
cl-libxml2 = pkg: {
nativeLibs = [ pkgs.libxml2 ];
};
cl-libyaml = pkg: {
nativeLibs = [ pkgs.libyaml ];
};
cl-mysql = pkg: {
nativeLibs = [ mariadb.client ];
};
cl-ode = pkg: {
nativeLibs = let
ode' = ode.overrideAttrs (o: {
configureFlags = [
"--enable-shared"
"--enable-double-precision"
];
});
in [ ode' ];
};
cl-opengl = pkg: {
nativeLibs = [ libGL ];
};
cl-pango = pkg: {
nativeLibs = [ pango ];
};
cl-rabbit = pkg: {
nativeBuildInputs = [ rabbitmq-c ];
nativeLibs = [ rabbitmq-c ];
};
cl-rdkafka = pkg: {
nativeBuildInputs = [ rdkafka ];
nativeLibs = [ rdkafka ];
};
cl-readline = pkg: {
nativeLibs = [ pkgs.readline ];
};
cl-rsvg2 = pkg: {
nativeLibs = [ librsvg ];
};
"cl-sat.glucose" = pkg: {
propagatedBuildInputs = [ pkgs.glucose ];
patches = [ ./patches/cl-sat.glucose-binary-from-PATH-if-present.patch ];
};
"cl-sat.minisat" = pkg: {
propagatedBuildInputs = [ pkgs.minisat ];
};
cl-webkit2 = pkg: {
nativeLibs = [ webkitgtk ];
};
classimp = pkg: {
nativeLibs = [ assimp ];
meta.broken = true; # Requires assimp ≤ 5.0.x.
};
clsql-postgresql = pkg: {
nativeLibs = [ postgresql.lib ];
};
clsql-sqlite3 = pkg: {
nativeLibs = [ sqlite ];
};
dbd-mysql = pkg: {
nativeLibs = [ mariadb.client ];
};
gsll = pkg: {
nativeBuildInputs = [ pkgs.gsl ];
nativeLibs = [ pkgs.gsl ];
};
iolib = pkg: {
nativeBuildInputs = [ libfixposix ];
nativeLibs = [ libfixposix ];
systems = [ "iolib" "iolib/os" "iolib/pathnames" ];
};
lev = pkg: {
nativeLibs = [ libev ];
};
lispbuilder-sdl-cffi = pkg: {
nativeLibs = [ SDL ];
};
lla = pkg: {
nativeLibs = [ openblas ];
};
mssql = pkg: {
nativeLibs = [ freetds ];
};
osicat = pkg: {
LD_LIBRARY_PATH = "${pkg}/posix/";
};
png = pkg: {
nativeBuildInputs = [ pkgs.libpng ];
nativeLibs = [ pkgs.libpng ];
};
pzmq = pkg: {
nativeBuildInputs = [ pkgs.zeromq ];
nativeLibs = [ pkgs.zeromq ];
};
pzmq-compat = pkg: {
nativeBuildInputs = [ pkgs.zeromq ];
nativeLibs = [ pkgs.zeromq ];
};
pzmq-examples = pkg: {
nativeBuildInputs = [ pkgs.zeromq ];
nativeLibs = [ pkgs.zeromq ];
};
pzmq-test = pkg: {
nativeBuildInputs = [ pkgs.zeromq ];
nativeLibs = [ pkgs.zeromq ];
};
sdl2 = pkg: {
nativeLibs = [ SDL2 ];
};
sqlite = pkg: {
nativeLibs = [ sqlite ];
};
trivial-package-manager = pkg: {
propagatedBuildInputs = [ pkgs.which ];
};
trivial-ssh-libssh2 = pkg: {
nativeLibs = [ libssh2 ];
};
zmq = pkg: {
nativeBuildInputs = [ pkgs.zeromq ];
nativeLibs = [ pkgs.zeromq ];
};
};
qlpkgs =
lib.optionalAttrs (builtins.pathExists ./imported.nix)
(import ./imported.nix { inherit (pkgs) runCommand fetchzip; pkgs = builtQlpkgs; });
builtQlpkgs = mapAttrs (n: v: build v) qlpkgs;
build = pkg:
let
builtPkg = build-asdf-system pkg;
withExtras = pkg //
(optionalAttrs
(hasAttr pkg.pname extras)
(extras.${pkg.pname} builtPkg));
fixedUp = fixup withExtras;
in build-asdf-system fixedUp;
in builtQlpkgs

View File

@ -1,34 +0,0 @@
# lisp-modules
Utilities for packaging ASDF systems using Nix.
## Quick start
#### Build an ASDF system:
```
nix-build ./examples/bordeaux-threads.nix
ls result/src
```
#### Build an `sbclWithPackages`:
```
nix-build ./examples/sbcl-with-bt.nix
result/bin/sbcl
```
#### Re-import Quicklisp packages:
```
nix-shell --run 'sbcl --script ql-import.lisp'
```
#### Test build of packages
```
(cd test; sbcl --script test.lisp ccl)
```
## Documentation
See `doc` directory.

View File

@ -1,7 +0,0 @@
with import ../../../default.nix {};
mkShell {
nativeBuildInputs = [
(lispPackages_new.sbclWithPackages
(ps: with ps; [ alexandria str dexador cl-ppcre sqlite arrow-macros jzon ]))
];
}

View File

@ -1,395 +0,0 @@
_1am
_3bmd
_3bmd-ext-code-blocks
access
acclimation
agutil
alexandria
anaphora
arnesi
array-operations
array-utils
arrows
asdf
asdf-package-system
asdf-system-connections
babel
binomial-heap
binpack
blackbird
bordeaux-threads
buildnode
buildnode-xhtml
calispel
cffi
cffi-grovel
cffi-toolchain
cffi-uffi-compat
chanl
check-it
chipz
chunga
circular-streams
cl-aa
cl-annot
cl-anonfun
cl-ansi-text
cl-async
cl-async-base
cl-async-repl
cl-async-ssl
cl-async-util
cl-base64
cl-cffi-gtk
cl-cffi-gtk-cairo
cl-cffi-gtk-gdk
cl-cffi-gtk-gdk-pixbuf
cl-cffi-gtk-gio
cl-cffi-gtk-glib
cl-cffi-gtk-gobject
cl-cffi-gtk-pango
cl-change-case
cl-cli
cl-colors
cl-colors2
cl-containers
cl-cookie
cl-css
cl-csv
cl-cuda
cl-custom-hash-table
cl-dbi
cl-difflib
cl-digraph
cl-dot
cl-emb
cl-environments
cl-fad
cl-form-types
cl-fuse
cl-fuse-meta-fs
cl-fuzz
cl-geometry
cl-gobject-introspection
cl-heap
cl-hooks
cl-html-diff
cl-html-parse
cl-html5-parser
cl-interpol
cl-jpeg
cl-json
cl-l10n
cl-l10n-cldr
cl-libuv
cl-locale
cl-markup
cl-mustache
cl-mysql
cl-num-utils
cl-paths
cl-paths-ttf
cl-pattern
cl-pdf
cl-postgres
cl-postgres_plus_local-time
cl-postgres_slash_tests
cl-ppcre
cl-ppcre-template
cl-ppcre-test
cl-ppcre-unicode
cl-prevalence
cl-protobufs
cl-qprint
cl-qrencode
cl-reexport
cl-shellwords
cl-slice
cl-smt-lib
cl-smtp
cl-speedy-queue
cl-store
cl-svg
cl-syntax
cl-syntax-annot
cl-syntax-anonfun
cl-syntax-markup
cl-syslog
cl-test-more
cl-typesetting
cl-unicode
cl-unification
cl-utilities
cl-vectors
cl-webkit2
cl-who
cl-xmlspam
cl_plus_ssl
clack
clack-socket
classowary
clfswm
closer-mop
closure-common
closure-html
clsql
clsql-postgresql
clsql-postgresql-socket
clsql-sqlite3
clsql-uffi
clss
cluffer
clump
clump-2-3-tree
clump-binary-tree
clunit
clunit2
clx
clx-truetype
collectors
colorize
command-line-arguments
css-lite
css-selectors
css-selectors-simple-tree
css-selectors-stp
cxml
cxml-stp
cxml_slash_test
data-table
dbd-mysql
dbd-postgres
dbd-sqlite3
dbi
dbi-test
dbus
defclass-std
dexador
dissect
djula
do-urlencode
documentation-utils
drakma
eager-future2
enchant
esrap
esrap-peg
external-program
fare-csv
fare-mop
fare-quasiquote
fare-quasiquote-extras
fare-quasiquote-optima
fare-quasiquote-readtable
fare-utils
fast-http
fast-io
fiasco
file-attributes
fiveam
flexi-streams
float-features
flow
fn
form-fiddle
fset
generic-cl
generic-cl_dot_arithmetic
generic-cl_dot_collector
generic-cl_dot_comparison
generic-cl_dot_container
generic-cl_dot_internal
generic-cl_dot_iterator
generic-cl_dot_lazy-seq
generic-cl_dot_map
generic-cl_dot_math
generic-cl_dot_object
generic-cl_dot_sequence
generic-cl_dot_set
gettext
global-vars
glsl-docs
glsl-spec
glsl-symbols
heap
html-encode
http-body
hu_dot_dwim_dot_asdf
hu_dot_dwim_dot_common
hu_dot_dwim_dot_common-lisp
hu_dot_dwim_dot_def
hu_dot_dwim_dot_def_plus_swank
hu_dot_dwim_dot_defclass-star
hu_dot_dwim_dot_stefil
hu_dot_dwim_dot_stefil_plus_hu_dot_dwim_dot_def
hu_dot_dwim_dot_stefil_plus_hu_dot_dwim_dot_def_plus_swank
hu_dot_dwim_dot_stefil_plus_swank
hunchensocket
hunchentoot
idna
ieee-floats
inferior-shell
introspect-environment
iolib
iolib_dot_asdf
iolib_dot_base
iolib_dot_common-lisp
iolib_dot_conf
ironclad
iterate
jonathan
jpl-queues
jpl-util
jsown
kmrcl
lack
lack-component
lack-middleware-backtrace
lack-util
lambda-fiddle
legit
let-plus
lev
lfarm-client
lfarm-common
lfarm-server
lfarm-ssl
lift
lisp-binary
lisp-namespace
lisp-unit
lisp-unit2
lla
local-time
log4cl
lparallel
lquery
marshal
md5
metabang-bind
metatilities-base
mgl
mgl-mat
mgl-pax
minheap
misc-extensions
mk-string-metrics
mmap
moptilities
more-conditions
mt19937
named-readtables
nbd
net-telent-date
net_dot_didierverna_dot_asdf-flv
nibbles
nyxt
optima
osicat
parachute
parenscript
parse-declarations-1_dot_0
parse-float
parse-number
parseq
parser-combinators
parser_dot_common-rules
pcall
pcall-queue
physical-quantities
plump
postmodern
proc-parse
prove
prove-asdf
ptester
puri
pythonic-string-reader
quasiquote-2_dot_0
query-fs
quri
rfc2388
rove
rt
s-sql
s-sql_slash_tests
s-sysdeps
s-xml
salza2
serapeum
simple-date
simple-date-time
simple-date_slash_postgres-glue
simple-inferiors
simple-tasks
slynk
smart-buffer
smug
spinneret
split-sequence
sqlite
static-dispatch
static-vectors
stefil
str
string-case
stumpwm
swank
swap-bytes
sycamore
symbol-munger
trees
trivia
trivia_dot_balland2006
trivia_dot_level0
trivia_dot_level1
trivia_dot_level2
trivia_dot_quasiquote
trivia_dot_trivial
trivial-arguments
trivial-backtrace
trivial-clipboard
trivial-cltl2
trivial-features
trivial-file-size
trivial-garbage
trivial-gray-streams
trivial-indent
trivial-macroexpand-all
trivial-main-thread
trivial-mimes
trivial-package-local-nicknames
trivial-shell
trivial-types
trivial-utf-8
trivial-with-current-source-form
type-i
uax-15
uffi
uiop
unit-test
unix-options
unix-opts
usocket
usocket-server
utilities_dot_print-items
utilities_dot_print-tree
uuid
varjo
vas-string-metrics
vecto
vom
wild-package-inferred-system
woo
wookie
xembed
xkeyboard
xml_dot_location
xmls
xpath
xpath_slash_test
xsubseq
yacc
yason
zpb-ttf
zpng

View File

@ -1,94 +0,0 @@
#!/usr/bin/env -S sbcl --script
(require :uiop)
;; prevent glibc hell
(setf (uiop:getenv "LD_LIBRARY_PATH") "")
(defparameter packages (uiop:read-file-lines "./lispPackagesToTest.txt"))
(defparameter lisp (or (cadr sb-ext:*posix-argv*) "sbcl"))
(defparameter nix-build "nix-build -E 'with import ../../../../default.nix {}; lispPackages_new.~aPackages.~a'")
(defparameter cpu-count
(length
(remove-if-not
(lambda (line)
(uiop:string-prefix-p "processor" line))
(uiop:read-file-lines "/proc/cpuinfo"))))
(defparameter sem (sb-thread:make-semaphore :count cpu-count))
(defparameter statuses (make-hash-table :synchronized t))
(defparameter log-lock (sb-thread:make-mutex))
(format *error-output* "Testing ~a on ~a cores~%" lisp cpu-count)
(defun clear-line ()
(write-char #\Return *error-output*)
(write-char #\Escape *error-output*)
(write-char #\[ *error-output*)
(write-char #\K *error-output*))
(declaim (type fixnum errors))
(defglobal errors 0)
(defmacro when-let (bindings &rest body)
(reduce
(lambda (expansion form)
(destructuring-bind (var test) form
(let ((testsym (gensym (symbol-name var))))
`(let ((,testsym ,test))
(when ,testsym
(let ((,var ,testsym))
,expansion))))))
(reverse bindings)
:initial-value `(progn ,@body)))
(dolist (pkg packages)
(sb-thread:wait-on-semaphore sem)
(sb-thread:make-thread
(lambda ()
(handler-case
(unwind-protect
(multiple-value-bind (out err code)
(uiop:run-program
(format nil nix-build lisp pkg)
:error-output '(:string :stripped t)
:ignore-error-status t)
(declare (ignorable err))
(setf (gethash pkg statuses) code)
(when-let ((pos (search "LOAD-FOREIGN-LIBRARY-ERROR" err :test #'string=))
(lines (uiop:split-string (subseq err pos) :separator '(#\Newline))))
(setf (gethash pkg statuses)
(fourth lines)))
(sb-thread:with-mutex (log-lock)
(clear-line)
(format *error-output* "[~a/~a] ~[OK~:;ERROR~] ~a~[~:;~%~]"
(hash-table-count statuses)
(length packages)
code
pkg
code)
(force-output *error-output*))
(unless (zerop code)
(sb-ext:atomic-incf errors)))
(sb-thread:signal-semaphore sem))
(error (e)
(format t "~a~%" e)
(sb-ext:quit :recklessly-p t :unix-status 1))))))
(sb-thread:wait-on-semaphore sem :n cpu-count)
(format t "~%Done (~a/~a)."
(- (length packages) errors)
(length packages))
(when (plusp errors)
(format t "~%~%~a Errors: " errors)
(maphash (lambda (k v)
(unless (and (numberp v) (zerop v))
(format t "~% ~a: ~a" k v)))
statuses))

View File

@ -1,30 +0,0 @@
Want to add a package? There are 3 simple steps!
1. Add the needed system names to quicklisp-to-nix-systems.txt.
2. cd <path to quicklisp-to-nix-systems.txt> ; nix-shell --pure --run 'quicklisp-to-nix .'
You might want to specify also the --cacheSystemInfoDir and --cacheFaslDir
parameters to preserve some data between runs. For example, it is very
useful when you add new packages with native dependencies and fail to
specify the native dependencies correctly the first time.
(Might be nice to ensure the cache directories exist)
3. Add native libraries and whatever else is needed to quicklisp-to-nix-overrides.nix.
If libraries are needed during package analysis then add them to shell.nix, too.
4. Sometimes there are problems with loading implementation-provided systems.
In this case you might need to add more systems in the implementation's (so
SBCL's) entry into *implementation-systems* in quicklisp-to-nix/system-info.lisp
To update to a more recent quicklisp dist modify
lispPackages.quicklisp to have a more recent distinfo.
quicklisp-to-nix-system-info is responsible for installing a quicklisp
package into an isolated environment and figuring out which packages
are required by that system. It also extracts other information that
is readily available once the system is loaded. The information
produced by this program is fed into quicklisp-to-nix. You usually
don't need to run this program unless you're trying to understand why
quicklisp-to-nix failed to handle a system. The technique used by
quicklisp-to-nix-system-info is described in its source.
quicklisp-to-nix is responsible for reading
quicklisp-to-nix-systems.txt, running quicklisp-to-nix-system-info,
and generating the nix packages associated with the closure of
quicklisp systems.

View File

@ -1,38 +0,0 @@
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
stdenv.mkDerivation rec {
pname = "asdf";
version = "2.26";
src = fetchurl {
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
sha256 = "sha256-tuUuIlZcS+a0izXeJl3Ckp+/PYAWkZ0+Cw7blwkh9+M=";
};
strictDeps = true;
nativeBuildInputs = [
texinfo
texLive
perl
];
buildPhase = ''
make asdf.lisp
mkdir build
ln -s ../asdf.lisp build
'';
installPhase = ''
mkdir -p "$out"/lib/common-lisp/asdf/
mkdir -p "$out"/share/doc/asdf/
cp -r ./* "$out"/lib/common-lisp/asdf/
cp -r doc/* "$out"/share/doc/asdf/
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
'';
meta = with lib; {
description = "Standard software-system definition library for Common Lisp";
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.linux;
};
}

View File

@ -1,37 +0,0 @@
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
stdenv.mkDerivation rec {
pname = "asdf";
version = "3.1.7";
src = fetchurl {
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
sha256 = "sha256-+P+FLM1mr2KRdj7bfhWq4ync86bJS/uE0Jm/E/e4HL0=";
};
strictDeps = true;
nativeBuildInputs = [
texinfo
texLive
perl
];
buildPhase = ''
make build/asdf.lisp
make -C doc asdf.info asdf.html
'';
installPhase = ''
mkdir -p "$out"/lib/common-lisp/asdf/
mkdir -p "$out"/share/doc/asdf/
cp -r ./* "$out"/lib/common-lisp/asdf/
cp -r doc/* "$out"/share/doc/asdf/
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
'';
meta = with lib; {
description = "Standard software-system definition library for Common Lisp";
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.unix;
};
}

View File

@ -1,37 +0,0 @@
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
stdenv.mkDerivation rec {
pname = "asdf";
version = "3.3.4";
src = fetchurl {
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
sha256 = "sha256-/k7cmN0ymZUgpP4K+IWfhq85TkzfPjTR4QdUgV9n1x4=";
};
strictDeps = true;
nativeBuildInputs = [
texinfo
texLive
perl
];
buildPhase = ''
make build/asdf.lisp
make -C doc asdf.info asdf.html
'';
installPhase = ''
mkdir -p "$out"/lib/common-lisp/asdf/
mkdir -p "$out"/share/doc/asdf/
cp -r ./* "$out"/lib/common-lisp/asdf/
cp -r doc/* "$out"/share/doc/asdf/
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
'';
meta = with lib; {
description = "Standard software-system definition library for Common Lisp";
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.unix;
};
}

View File

@ -1,67 +0,0 @@
#! /bin/sh
# Part of NixPkgs package collection
# This script can be used at your option under the same license as NixPkgs or
# under MIT/X11 license
lisp="$1"
systems="$2"
target="$3"
code="$4"
NIX_LISP_SKIP_CODE=1 NIX_LISP_COMMAND="$lisp" source "$(dirname "$0")/cl-wrapper.sh"
NIX_LISP_BUILD_CODE=
case "$NIX_LISP" in
sbcl)
NIX_LISP_BUILD_CODE="(progn
(let*
((old-fn (symbol-function 'sb-alien::dlopen-or-lose )))
(sb-ext:with-unlocked-packages (:sb-sys :sb-alien)
(defun sb-alien::dlopen-or-lose (&rest args)
(or
(ignore-errors (progn (apply old-fn args)))
(and
args
(loop
with try = nil
with obj = (first args)
with original-namestring = (sb-alien::shared-object-namestring obj)
for path in (list $(echo "$NIX_LISP_LD_LIBRARY_PATH" | sed -e 's/:/" "/g; s/^/"/; s/$/"/'))
for target := (format nil \"~a/~a\" path original-namestring)
when (ignore-errors
(progn
(setf (sb-alien::shared-object-namestring obj) target)
(setf try (apply old-fn args))
t)) do
(progn (return try))
finally (progn (setf (sb-alien::shared-object-namestring obj) original-namestring)
(return (apply old-fn args)))
)
)
)
)
)
)
(sb-ext:save-lisp-and-die \"$target\"
:toplevel (lambda ()
(setf common-lisp:*standard-input* (sb-sys::make-fd-stream 0 :input t :buffering :line))
(setf common-lisp:*standard-output* (sb-sys::make-fd-stream 1 :output t :buffering :line))
(setf uiop/image:*command-line-arguments* (cdr sb-ext:*posix-argv*))
$code)
:executable t :save-runtime-options t :purify t))"
systems=":sb-posix $systems"
;;
ecl)
NIX_LISP_BUILD_CODE="()"
;;
clisp)
NIX_LISP_BUILD_CODE="(ext:saveinitmem \"$target\" :norc t :init-function (lambda () $code (ext:bye)) :script nil :executable 0)"
;;
esac
"$lisp" \
"$NIX_LISP_EXEC_CODE" "(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.lisp\")" \
"$NIX_LISP_EXEC_CODE" "(mapcar 'asdf:load-system (list $systems))" \
"$NIX_LISP_EXEC_CODE" "$NIX_LISP_BUILD_CODE" \
"$NIX_LISP_EXEC_CODE" "(quit)"

View File

@ -1,134 +0,0 @@
#!@bash@/bin/bash
# Part of NixPkgs package collection
# This script can be used at your option under the same license as NixPkgs or
# under MIT/X11 license
eval "$NIX_LISP_PREHOOK"
NIX_LISP_COMMAND="$1"
shift
if [ -z "$NIX_LISP" ]; then
while [ -h "${NIX_LISP_COMMAND}" ]; do
NIX_LISP_COMMAND="$(readlink -n "${NIX_LISP_COMMAND}")"
done
NIX_LISP="${NIX_LISP_COMMAND##*/}"
fi
export NIX_LISP NIX_LISP_LOAD_FILE NIX_LISP_EXEC_CODE NIX_LISP_COMMAND NIX_LISP_FINAL_PARAMETERS
test -n "$NIX_LISP_LD_LIBRARY_PATH" &&
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$NIX_LISP_LD_LIBRARY_PATH"
declare -a NIX_LISP_FINAL_PARAMETERS;
case "$NIX_LISP" in
sbcl)
NIX_LISP_LOAD_FILE="--load"
NIX_LISP_EXEC_CODE="--eval"
NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='--non-interactive'
NIX_LISP_FINAL_PARAMETERS=
NIX_LISP_FASL_TYPE="fasl"
;;
ecl)
NIX_LISP_LOAD_FILE="-load"
NIX_LISP_EXEC_CODE="-eval"
NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='--nodebug'
NIX_LISP_FINAL_PARAMETERS=
NIX_LISP_FASL_TYPE="fas"
;;
clisp)
NIX_LISP_LOAD_FILE="-c -l"
NIX_LISP_EXEC_CODE="-x"
NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='-on-error exit'
NIX_LISP_FINAL_PARAMETERS="-repl"
NIX_LISP_FASL_TYPE="fas"
;;
lx86cl64)
NIX_LISP_LOAD_FILE="-l"
NIX_LISP_EXEC_CODE="-e"
NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='-b'
NIX_LISP_FINAL_PARAMETERS=
NIX_LISP_FASL_TYPE="lx64fsl"
;;
lx86cl)
NIX_LISP_LOAD_FILE="-l"
NIX_LISP_EXEC_CODE="-e"
NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='-b'
NIX_LISP_FINAL_PARAMETERS=
NIX_LISP_FASL_TYPE="lx32fsl"
;;
abcl)
NIX_LISP_LOAD_FILE="--load"
NIX_LISP_EXEC_CODE="--eval"
NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG=''
NIX_LISP_FINAL_PARAMETERS=
NIX_LISP_FASL_TYPE="abcl"
;;
esac
NIX_LISP_ASDF_REGISTRY_CODE="
(progn
(setf asdf:*source-registry-parameter*
'(:source-registry
$(for p in $NIX_LISP_ASDF_PATHS; do
echo "(:tree \"$p\")"
done)
:inherit-configuration))
(asdf:initialize-source-registry)
)
"
NIX_LISP_ASDF="${NIX_LISP_ASDF:-@out@}"
nix_lisp_run_single_form(){
NIX_LISP_FINAL_PARAMETERS=("$NIX_LISP_EXEC_CODE" "$1"
"$NIX_LISP_EXEC_CODE" "$NIX_LISP_QUIT" $NIX_LISP_NODEBUG)
}
nix_lisp_build_system(){
NIX_LISP_FINAL_PARAMETERS=(
"$NIX_LISP_EXEC_CODE" "(progn
(asdf:load-system :$1)
(loop for s in (list $(for i in $3; do echo ":$i"; done)) do (asdf:load-system s)))"
"$NIX_LISP_EXEC_CODE" "(progn
(setf (asdf/system:component-entry-point (asdf:find-system :$1)) ${2:-nil})
#+cffi(setf cffi:*foreign-library-directories*
(cffi::explode-path-environment-variable \"NIX_LISP_LD_LIBRARY_PATH\"))
#+sbcl(loop
with libpath := (uiop:split-string (uiop:getenv \"NIX_LISP_LD_LIBRARY_PATH\")
:separator \":\")
for l in sb-alien::*shared-objects*
for ns := (sb-alien::shared-object-namestring l)
do (format *error-output* \"Searching alien object ~s in ~s~%\"
ns libpath)
do (and (> (length ns) 0) (not (equal (elt ns 0) \"/\"))
(let*
((prefix (find-if (lambda (s) (probe-file (format nil \"~a/~a\" s ns))) libpath))
(fullpath (and prefix (format nil \"~a/~a\" prefix ns))))
(when fullpath
(format *error-output* \"Found: ~s~%\" fullpath)
(setf
(sb-alien::shared-object-namestring l) fullpath
(sb-alien::shared-object-pathname l) (probe-file fullpath)))))
)
$4
(asdf:perform (quote asdf:program-op) :$1)
)")
}
eval "$NIX_LISP_PRELAUNCH_HOOK"
if [ -z "$NIX_LISP_SKIP_CODE" ]; then
"$NIX_LISP_COMMAND" $NIX_LISP_EARLY_OPTIONS \
$NIX_LISP_EXEC_CODE "${NIX_LISP_ASDF_LOAD:-"(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.$NIX_LISP_FASL_TYPE\")"}" \
$NIX_LISP_EXEC_CODE "$NIX_LISP_ASDF_REGISTRY_CODE" \
${NIX_LISP_FINAL_PARAMETERS[*]:+"${NIX_LISP_FINAL_PARAMETERS[@]}"} \
"$@"
fi

View File

@ -1,3 +0,0 @@
#!@bash@/bin/bash
source "@out@"/bin/cl-wrapper.sh "${NIX_LISP_COMMAND:-$(@ls@ "@lisp@/bin"/* | @head@ -n 1)}" "$@"

View File

@ -1,57 +0,0 @@
{lib, stdenv, asdf, which, bash, lisp ? null}:
stdenv.mkDerivation {
name = "cl-wrapper-script";
buildPhase="";
installPhase=''
mkdir -p "$out"/bin
export head="$(which head)"
export ls="$(which ls)"
substituteAll ${./common-lisp.sh} "$out"/bin/common-lisp.sh
substituteAll "${./build-with-lisp.sh}" "$out/bin/build-with-lisp.sh"
substituteAll "${./cl-wrapper.sh}" "$out/bin/cl-wrapper.sh"
patchShebangs "$out/bin"
chmod a+x "$out"/bin/*
substituteAll "${./setup-hook.sh}" "setup-hook-parsed"
addEnvHooks(){ true; };
source setup-hook-parsed
setLisp "${lisp}"
echo "$NIX_LISP"
mkdir -p "$out/lib/common-lisp/"
cp -r "${asdf}/lib/common-lisp"/* "$out/lib/common-lisp/"
chmod u+rw -R "$out/lib/common-lisp/"
NIX_LISP_PRELAUNCH_HOOK='
NIX_LISP_FASL_TYPE=lisp
nix_lisp_run_single_form "(progn
(uiop/lisp-build:compile-file* \"'"$out"'/lib/common-lisp/asdf/build/asdf.lisp\")
(asdf:load-system :uiop :force :all)
(asdf:load-system :asdf :force :all)
(ignore-errors (asdf:load-system :uiop/version :force :all))
)"' \
"$out/bin/common-lisp.sh"
'';
buildInputs = [which];
inherit asdf lisp bash;
stdenv_shell = stdenv.shell;
setupHook = ./setup-hook.sh;
dontUnpack = true;
ASDF_OUTPUT_TRANSLATIONS="${builtins.storeDir}/:${builtins.storeDir}";
passthru = {
inherit lisp;
};
meta = {
description = "Script used to wrap Common Lisp implementations";
maintainers = [lib.maintainers.raskin];
};
}

View File

@ -1,39 +0,0 @@
NIX_LISP_ASDF="@out@"
CL_SOURCE_REGISTRY="${CL_SOURCE_REGISTRY:+$CL_SOURCE_REGISTRY:}@out@/lib/common-lisp/asdf/"
addASDFPaths () {
for j in "$1"/lib/common-lisp-settings/*-path-config.sh; do
source "$j"
done
}
setLisp () {
if [ -z "${NIX_LISP_COMMAND:-}" ]; then
for j in "$1"/bin/*; do
case "$(basename "$j")" in
sbcl) NIX_LISP_COMMAND="$j" ;;
ecl) NIX_LISP_COMMAND="$j" ;;
clisp) NIX_LISP_COMMAND="$j" ;;
lx86cl) NIX_LISP_COMMAND="$j" ;;
lx86cl64) NIX_LISP_COMMAND="$j" ;;
esac
done
fi
if [ -n "${NIX_LISP_COMMAND:-}" ] && [ -z "${NIX_LISP:-}" ]; then
NIX_LISP="${NIX_LISP_COMMAND##*/}"
fi
}
collectNixLispLDLP () {
if echo "$1/lib"/lib*.{so,dylib}* | grep . > /dev/null; then
export NIX_LISP_LD_LIBRARY_PATH="${NIX_LISP_LD_LIBRARY_PATH-}${NIX_LISP_LD_LIBRARY_PATH:+:}$1/lib"
fi
}
export NIX_LISP_COMMAND NIX_LISP CL_SOURCE_REGISTRY NIX_LISP_ASDF
addEnvHooks "$targetOffset" addASDFPaths setLisp collectNixLispLDLP
mkdir -p "$HOME"/.cache/common-lisp || HOME="$TMP/.temp-${USER:-nixbld}-home"
mkdir -p "$HOME"/.cache/common-lisp

View File

@ -1,120 +0,0 @@
args @ {lib, stdenv, clwrapper, baseName, packageName ? baseName
, parasites ? []
, buildSystems ? ([packageName] ++ parasites)
, version ? "latest"
, src, description, deps, buildInputs ? [], meta ? {}, overrides?(x: {})
, propagatedBuildInputs ? []
, asdFilesToKeep ? [(builtins.concatStringsSep "" [packageName ".asd"])]}:
let
deployConfigScript = ''
outhash="$out"
outhash="''${outhash##*/}"
outhash="''${outhash%%-*}"
config_script="$out"/lib/common-lisp-settings/${args.baseName}-shell-config.sh
path_config_script="$out"/lib/common-lisp-settings/${args.baseName}-path-config.sh
store_translation="$(dirname "$out"):$(dirname "$out")"
mkdir -p "$(dirname "$config_script")"
touch "$config_script"
touch "$path_config_script"
chmod a+x "$config_script"
chmod a+x "$path_config_script"
echo "if test -z \"\''${_''${outhash}_NIX_LISP_CONFIG:-}\"; then export _''${outhash}_NIX_LISP_CONFIG=1; " >> "$config_script"
echo "export NIX_CFLAGS_COMPILE='$NIX_CFLAGS_COMPILE'\"\''${NIX_CFLAGS_COMPILE:+ \$NIX_CFLAGS_COMPILE}\"" >> "$config_script"
echo "export NIX_LDFLAGS='$NIX_LDFLAGS'\"\''${NIX_LDFLAGS:+ \$NIX_LDFLAGS}\"" >> "$config_script"
echo "export NIX_LISP_COMMAND='$NIX_LISP_COMMAND'" >> "$config_script"
echo "export NIX_LISP_ASDF='$NIX_LISP_ASDF'" >> "$config_script"
set | grep NIX_CC_WRAPPER_ | sed -e 's@^NIX_CC_WRAPPER@export &@' >> "$config_script"
echo "export PATH=\"\''${PATH:+\$PATH:}$PATH\"" >> "$config_script"
echo "echo \"\$ASDF_OUTPUT_TRANSLATIONS\" | grep -E '(^|:)$store_translation(:|\$)' >/dev/null || export ASDF_OUTPUT_TRANSLATIONS=\"\''${ASDF_OUTPUT_TRANSLATIONS:+\$ASDF_OUTPUT_TRANSLATIONS:}\"'$store_translation'" >> "$config_script"
echo "source '$path_config_script'" >> "$config_script"
echo "fi" >> "$config_script"
echo "if test -z \"\''${_''${outhash}_NIX_LISP_PATH_CONFIG:-}\"; then export _''${outhash}_NIX_LISP_PATH_CONFIG=1; " >> "$path_config_script"
echo "NIX_LISP_ASDF_PATHS=\"$( echo "\''${NIX_LISP_ASDF_PATHS:-}"; echo "$NIX_LISP_ASDF_PATHS"; echo "$out/lib/common-lisp/${args.baseName}" )\"" >> "$path_config_script"
echo "export NIX_LISP_ASDF_PATHS=\$((tr ' ' '\n' | sort | uniq | tr '\n' ' ') <<< \$NIX_LISP_ASDF_PATHS)" >> $path_config_script
test -n "$LD_LIBRARY_PATH" &&
echo "export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}\"'$LD_LIBRARY_PATH'" >> "$path_config_script"
test -n "$NIX_LISP_LD_LIBRARY_PATH" &&
echo "export NIX_LISP_LD_LIBRARY_PATH=\"\''${NIX_LISP_LD_LIBRARY_PATH:-}\''${NIX_LISP_LD_LIBRARY_PATH:+:}\"'$(echo "$NIX_LISP_LD_LIBRARY_PATH" | tr -d '\n' | tr : '\n' | sort | uniq | tr '\n' ':' | sed -e 's/:$//')'" >> "$path_config_script"
echo "fi" >> "$path_config_script"
'';
deployLaunchScript = ''
launch_script="$out"/bin/${args.baseName}-lisp-launcher.sh
mkdir -p "$(dirname "$launch_script")"
touch "$launch_script"
chmod a+x "$launch_script"
echo "#! ${stdenv.shell}" >> "$launch_script"
echo "source '$config_script'" >> "$launch_script"
echo "test -n \"\$NIX_LISP_LD_LIBRARY_PATH\" && export LD_LIBRARY_PATH=\"\$NIX_LISP_LD_LIBRARY_PATH\''${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH\"" >> "$launch_script"
echo '"${clwrapper}/bin/common-lisp.sh" "$@"' >> "$launch_script"
'';
moveAsdFiles = ''
find $out/lib/common-lisp/ -name '*.asd' | while read ASD_FILE; do
KEEP_THIS_ASD=0
for ALLOWED_ASD in $asdFilesToKeep; do
ALLOWED_ASD="/$ALLOWED_ASD"
ALLOWED_ASD_LENGTH=${"$"}{#ALLOWED_ASD}
ASD_FILE_LENGTH=${"$"}{#ASD_FILE}
ASD_FILE_SUFFIX_INDEX=$(expr "$ASD_FILE_LENGTH" - "$ALLOWED_ASD_LENGTH")
ASD_FILE_SUFFIX_INDEX=$(expr "$ASD_FILE_SUFFIX_INDEX" + 1)
echo $ALLOWED_ASD $ASD_FILE $ASD_FILE_SUFFIX_INDEX $(expr substr "$ASD_FILE" "$ASD_FILE_SUFFIX_INDEX" "$ASD_FILE_LENGTH")
if [ "$(expr substr "$ASD_FILE" "$ASD_FILE_SUFFIX_INDEX" "$ASD_FILE_LENGTH")" == "$ALLOWED_ASD" ]; then
KEEP_THIS_ASD=1
break
fi
done
if [ "$KEEP_THIS_ASD" == 0 ]; then
mv "$ASD_FILE"{,.sibling}
fi
done
'';
basePackage = {
name = "lisp-${baseName}-${version}";
inherit src;
dontBuild = true;
inherit deployConfigScript deployLaunchScript;
inherit asdFilesToKeep moveAsdFiles;
installPhase = ''
eval "$preInstall"
mkdir -p "$out"/share/doc/${args.baseName};
mkdir -p "$out"/lib/common-lisp/${args.baseName};
cp -r . "$out"/lib/common-lisp/${args.baseName};
cp -rf doc/* LICENCE LICENSE COPYING README README.html README.md readme.html "$out"/share/doc/${args.baseName} || true
${deployConfigScript}
${deployLaunchScript}
${moveAsdFiles}
env -i \
NIX_LISP="$NIX_LISP" \
NIX_LISP_PRELAUNCH_HOOK='nix_lisp_run_single_form "(progn
${lib.concatMapStrings (system: ''
(asdf:compile-system :${system})
(asdf:load-system :${system})
(asdf:operate (quote asdf::compile-bundle-op) :${system})
(ignore-errors (asdf:operate (quote asdf::deploy-asd-op) :${system}))
'') buildSystems}
)"' \
"$out/bin/${args.baseName}-lisp-launcher.sh"
eval "$postInstall"
'';
propagatedBuildInputs = (args.deps or []) ++ [clwrapper clwrapper.lisp clwrapper.asdf]
++ (args.propagatedBuildInputs or []);
buildInputs = buildInputs;
dontStrip=true;
ASDF_OUTPUT_TRANSLATIONS="${builtins.storeDir}/:${builtins.storeDir}";
noAuditTmpDir = true;
meta = {
inherit description version;
} // meta;
};
package = basePackage // (overrides basePackage);
in
stdenv.mkDerivation package

View File

@ -1,16 +0,0 @@
#! /bin/sh
[ -z "$NIX_QUICKLISP_DIR" ] && {
export NIX_QUICKLISP_DIR="$(mktemp -d --tmpdir nix-quicklisp.XXXXXX)"
}
[ -f "$NIX_QUICKLISP_DIR/setup.lisp" ] || {
"$(dirname "$0")/quicklisp-beta-env.sh" "$NIX_QUICKLISP_DIR" &> /dev/null < /dev/null
}
name="$1"
sbcl --noinform --load "$NIX_QUICKLISP_DIR"/setup.lisp --eval "(ql:quickload :$name)" \
--eval "(format t \"~a~%\" (or (asdf::system-description (asdf::find-system \"$name\")) \"\"))" \
--eval '(quit)' --script |
tee /dev/stderr | tail -n 1

View File

@ -1,174 +0,0 @@
#! /bin/sh
name="$1"
[ -z "$NIX_LISP_PACKAGES_DEFINED_LIST" ] && export NIX_LISP_PACKAGES_DEFINED_LIST="$(mktemp)"
if [ -n "$NIX_LISP_UPDATE_PACKAGE" ] || [ -n "$NIX_LISP_UPDATE_PACKAGES" ]; then
export NIX_LISP_UPDATE_PACKAGE=
else
nix-instantiate "$(dirname "$0")"/../../../../ -A "lispPackages.$name" > /dev/null && exit
fi
grep "^$name\$" "$NIX_LISP_PACKAGES_DEFINED_LIST" > /dev/null && exit
echo "$name" >> "$NIX_LISP_PACKAGES_DEFINED_LIST"
[ -z "$NIX_QUICKLISP_DIR" ] && {
export NIX_QUICKLISP_DIR="$(mktemp -d --tmpdir nix-quicklisp.XXXXXX)"
}
[ -f "$NIX_QUICKLISP_DIR/setup.lisp" ] || {
"$(dirname "$0")/quicklisp-beta-env.sh" "$NIX_QUICKLISP_DIR" &> /dev/null < /dev/null
}
description="$("$(dirname "$0")/asdf-description.sh" "$name")"
[ -z "$description" ] && {
description="$(curl -L https://github.com/quicklisp/quicklisp-projects/raw/master/"$name"/description.txt)"
[ "$(echo "$description" | wc -l)" -gt 10 ] && description=""
}
dependencies="$("$(dirname "$0")/quicklisp-dependencies.sh" "$name" | xargs)"
ql_src="$(curl -L https://github.com/quicklisp/quicklisp-projects/raw/master/"$name"/source.txt)"
ql_src_type="${ql_src%% *}"
url="${ql_src##* }"
[ "$ql_src_type" = "kmr-git" ] && {
ql_src_type=git
url="http://git.kpe.io/$url.git"
export NIX_PREFETCH_GIT_DEEP_CLONE=1
}
[ "$ql_src_type" = ediware-http ] && {
ql_src_type=github
url="edicl/$url";
}
[ "$ql_src_type" = xach-http ] && {
ql_src_type=github
url="xach/$url";
}
[ "$ql_src_type" = github ] && {
ql_src_type=git
url="https://github.com/$url";
version="$("$(dirname "$0")/urls-from-page.sh" "$url/releases/" | grep /tag/ | head -n 1 | xargs -l1 basename)"
rev="refs/tags/$version";
}
[ "$ql_src_type" = git ] && {
fetcher="pkgs.fetchgit"
( [ "${url#git://github.com/}" != "$url" ] ||
[ "${url#https://github.com/}" != "$url" ]
) && {
url="${url/git:/https:}"
url="${url%.git}"
[ -z "$rev" ] && rev=$("$(dirname "$0")/urls-from-page.sh" "$url/commits" | grep /commit/ | head -n 1 | xargs basename)
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev" | grep . | tail -n 1)
[ -z "$version" ] && version="git-$(date +%Y%m%d)";
}
[ "${url#git://common-lisp.net/}" != "$url" ] && {
http_repo_url="$url"
http_repo_url="${http_repo_url/git:/http:}"
http_repo_url="${http_repo_url/\/projects\// /r/projects/}"
http_repo_head="$http_repo_url/refs/heads/master"
echo "$http_repo_head" >&2
[ -z "$rev" ] && rev=$(curl -L "$http_repo_head");
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev")
[ -z "$version" ] && version="git-$(date +%Y%m%d)";
}
[ "${url#http://git.b9.com/}" != "$url" ] && {
http_repo_url="$url"
http_repo_url="${http_repo_url/git:/http:}"
http_repo_head="$http_repo_url/refs/heads/master"
echo "$http_repo_head" >&2
rev=$(curl -L "$http_repo_head");
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev" | tail -n 1)
version="git-$(date +%Y%m%d)";
}
[ "${url#http://common-lisp.net/}" != "$url" ] && {
http_repo_url="$url"
http_repo_url="${http_repo_url/git:/http:}"
http_repo_head="$http_repo_url/refs/heads/master"
echo "$http_repo_head" >&2
rev=$(curl -L "$http_repo_head");
hash=$("$(dirname "$0")/../../../build-support/fetchgit/nix-prefetch-git" "$url" "$rev" | tail -n 1)
version="git-$(date +%Y%m%d)";
}
}
[ "$ql_src_type" = cvs ] && {
fetcher="pkgs.fetchcvs"
date="$(date -d yesterday +%Y-%m-%d)"
version="cvs-$date"
module="${module:-$name}"
hash=$(USE_DATE=1 "$(dirname "$0")/../../../build-support/fetchcvs/nix-prefetch-cvs" "$url" "$module" "$date")
cvsRoot="$url"
unset url
}
[ "$ql_src_type" = clnet-darcs ] && {
ql_src_type=darcs
url="http://common-lisp.net/project/$url/darcs/$url/"
}
[ "$ql_src_type" = darcs ] && {
fetcher="pkgs.fetchdarcs"
[ -z "$version" ] &&
version="$(curl "$url/_darcs/inventory" | grep '\[TAG ' | tail -n 1 | sed -e 's/.* //')"
[ -z "$version" ] &&
version="$(curl "$url/_darcs/hashed_inventory" | grep '\[TAG ' | tail -n 1 | sed -e 's/.* //')"
rev="$version";
hash=$(echo "
with (import <nixpkgs> {});
fetchdarcs {
url=''$url'';
rev=''$version'';
sha256=''0000000000000000000000000000000000000000000000000000000000000000'';
}" | nix-instantiate - | tail -n 1 |
xargs nix-store -r 2>&1 | tee /dev/stderr | grep 'instead has' | tail -n 1 |
sed -e 's/.* instead has .//;s/[^0-9a-z].*//')
}
[ "$ql_src_type" = froydware-http ] && {
dirurl="http://method-combination.net/lisp/files/";
url="$("$(dirname "$0")/urls-from-page.sh" "$dirurl" |
grep "/${url}_" | grep -v "[.]asc\$" | tail -n 1)"
ql_src_type=http
}
[ "$ql_src_type" = http ] && {
fetcher="pkgs.fetchurl";
version="$(echo "$url" | sed -re 's@.*[-_]([0-9.]+)[-._].*@\1@')"
hash="$(nix-prefetch-url "$url" | grep . | tail -n 1)"
}
[ "$ql_src_type" = https ] && {
fetcher="pkgs.fetchurl";
version="$(echo "$url" | sed -re 's@.*[-_]([0-9.]+)[-._].*@\1@')"
hash="$(nix-prefetch-url "$url" | grep . | tail -n 1)"
}
if [ "$ql_src" = '{"error":"Not Found"}' ]; then
echo "# $name: not found"
else
cat << EOF | grep -Ev '^[ ]+$'
$name = buildLispPackage rec {
baseName = "$name";
version = "${version:-\${Set me //}";
description = "$description";
deps = [$dependencies];
# Source type: $ql_src_type
src = ${fetcher:-pkgs.fetchurl} {
${url:+url = ''$url'';}
sha256 = "${hash:-0000000000000000000000000000000000000000000000000000000000000000}";
${rev:+rev = ''$rev'';}
${date:+date = ''$date'';}
${module:+module = ''$module'';}
${cvsRoot:+cvsRoot = ''$cvsRoot'';}
};
};
EOF
fi
for i in $dependencies; do "$0" "$i"; done

View File

@ -1,16 +0,0 @@
#! /bin/sh
WORK_DIR=$(mktemp -d "/tmp/ql-venv-XXXXXX")
mkdir -p "${1:-.}"
TARGET="$(cd "${1:-.}"; pwd)"
curl http://beta.quicklisp.org/quicklisp.lisp > "$WORK_DIR/ql.lisp"
sbcl --noinform \
--load "$WORK_DIR/ql.lisp" \
--eval "(quicklisp-quickstart:install :path \"$TARGET/\")" \
--eval "(cl-user::quit)" \
--script
rm -rf "$WORK_DIR"

View File

@ -1,11 +0,0 @@
#! /bin/sh
[ -z "$NIX_QUICKLISP_DIR" ] && {
export NIX_QUICKLISP_DIR="$(mktemp -d --tmpdir nix-quicklisp.XXXXXX)"
}
[ -f "$NIX_QUICKLISP_DIR/setup.lisp" ] || {
"$(dirname "$0")/quicklisp-beta-env.sh" "$NIX_QUICKLISP_DIR" &> /dev/null < /dev/null
}
sbcl --noinform --eval "(with-output-to-string (*standard-output*) (load \"$NIX_QUICKLISP_DIR/setup.lisp\"))" --eval "(with-output-to-string (*standard-output*) (with-output-to-string (*error-output*) (with-output-to-string (*trace-output*) (ql:quickload :$1))))" --eval "(format t \"~{~a~%~}\" (mapcar 'ql::name (mapcar 'car (cdr (ql::dependency-tree \"$1\")))))" --eval '(quit)' --script

View File

@ -1,14 +0,0 @@
#! /bin/sh
url="$1"
protocol="${url%%:*}"
path="${url#$protocol://}"
server="${path%%/*}"
basepath="${path%/*}"
relpath="${path#$server}"
echo "URL: $url" >&2
curl -A 'text/html; text/xhtml; text/xml; */*' -L -k "$url" | sed -re 's/^/-/;s/[^a-zA-Z][hH][rR][eE][fF]=("([^"]*)"|'\''([^'\'']*)'\''|([^"'\'' <>&]+)[ <>&])/\n+\2\3\4\n-/g' | \
sed -e '/^-/d; s/^[+]//; /^#/d;'"s/^\\//$protocol:\\/\\/$server\\//g" | \
sed -re 's`^[^:]*$`'"$protocol://$basepath/&\`"

View File

@ -1,272 +0,0 @@
{lib, stdenv, clwrapper, pkgs, sbcl, coreutils, nix, asdf}:
let lispPackages = rec {
inherit lib pkgs clwrapper stdenv;
nixLib = pkgs.lib;
callPackage = nixLib.callPackageWith lispPackages;
buildLispPackage = callPackage ./define-package.nix;
quicklisp = buildLispPackage rec {
baseName = "quicklisp";
version = "2021-02-13";
buildSystems = [];
description = "The Common Lisp package manager";
deps = [];
src = pkgs.fetchFromGitHub {
owner = "quicklisp";
repo = "quicklisp-client";
rev = "version-${version}";
sha256 = "sha256-1HLVPhl8aBaeG8dRLxBh0j0X/0wqFeNYK1CEfiELToA=";
};
overrides = x: rec {
inherit clwrapper;
quicklispdist = pkgs.fetchurl {
# Will usually be replaced with a fresh version anyway, but needs to be
# a valid distinfo.txt
url = "http://beta.quicklisp.org/dist/quicklisp/2021-12-09/distinfo.txt";
sha256 = "sha256:0gc4cv73nl7xkfwvmkmfhfx6yqf876nfm2v24v6fky9n24sh4y6w";
};
buildPhase = "true; ";
postInstall = ''
substituteAll ${./quicklisp.sh} "$out"/bin/quicklisp
chmod a+x "$out"/bin/quicklisp
cp "${quicklispdist}" "$out/lib/common-lisp/quicklisp/quicklisp-distinfo.txt"
'';
};
};
quicklisp-to-nix-system-info = stdenv.mkDerivation {
pname = "quicklisp-to-nix-system-info";
version = "1.0.0";
src = ./quicklisp-to-nix;
nativeBuildInputs = [sbcl];
buildInputs = [
lispPackages.quicklisp coreutils
];
touch = coreutils;
nix-prefetch-url = nix;
inherit quicklisp;
buildPhase = ''
${sbcl}/bin/sbcl --eval '(load #P"${asdf}/lib/common-lisp/asdf/build/asdf.lisp")' --load $src/system-info.lisp --eval '(ql-to-nix-system-info::dump-image)'
'';
installPhase = ''
mkdir -p $out/bin
cp quicklisp-to-nix-system-info $out/bin
'';
dontStrip = true;
};
quicklisp-to-nix = stdenv.mkDerivation {
pname = "quicklisp-to-nix";
version = "1.0.0";
src = ./quicklisp-to-nix;
buildDependencies = [sbcl quicklisp-to-nix-system-info];
buildInputs = with pkgs.lispPackages; [md5 cl-emb alexandria external-program];
touch = coreutils;
nix-prefetch-url = nix;
inherit quicklisp;
deps = [];
system-info = quicklisp-to-nix-system-info;
buildPhase = ''
${clwrapper}/bin/cl-wrapper.sh "${sbcl}/bin/sbcl" --eval '(load #P"${asdf}/lib/common-lisp/asdf/build/asdf.lisp")' --load $src/ql-to-nix.lisp --eval '(ql-to-nix::dump-image)'
'';
installPhase = ''
mkdir -p $out/bin
cp quicklisp-to-nix $out/bin
'';
dontStrip = true;
};
clx-truetype = buildLispPackage rec {
baseName = "clx-truetype";
version = "20160825-git";
buildSystems = [ "clx-truetype" ];
parasites = [ "clx-truetype-test" ];
description = "clx-truetype is pure common lisp solution for antialiased TrueType font rendering using CLX and XRender extension.";
deps = with pkgs.lispPackages; [
alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf cl-store
cl-vectors clx trivial-features zpb-ttf
];
src = pkgs.fetchurl {
url = "http://beta.quicklisp.org/archive/clx-truetype/2016-08-25/clx-truetype-20160825-git.tgz";
sha256 = "0ndy067rg9w6636gxwlpnw7f3ck9nrnjb03444pprik9r3c9in67";
};
packageName = "clx-truetype";
asdFilesToKeep = ["clx-truetype.asd"];
};
cluffer = buildLispPackage rec {
baseName = "cluffer";
version = "2018-09-24";
buildSystems = [ "cluffer-base" "cluffer-simple-buffer" "cluffer-simple-line" "cluffer-standard-buffer" "cluffer-standard-line" "cluffer" ];
parasites = [ "cluffer-test" ];
description = "General purpose text-editor buffer";
deps = with pkgs.lispPackages; [
acclimation clump
];
src = pkgs.fetchFromGitHub {
owner = "robert-strandh";
repo = "cluffer";
rev = "4aad29c276a58a593064e79972ee4d77cae0af4a";
sha256 = "1bcg13g7qb3dr8z50aihdjqa6miz5ivlc9wsj2csgv1km1mak2kj";
# date = 2018-09-24T04:45:36+02:00;
};
packageName = "cluffer";
asdFilesToKeep = [ "cluffer.asd" "cluffer-base.asd" "cluffer-simple-buffer.asd" "cluffer-simple-line.asd" "cluffer-standard-buffer.asd" "cluffer-standard-line.asd" ];
};
nyxt = pkgs.lispPackages.buildLispPackage rec {
baseName = "nyxt";
version = "2.2.4";
description = "Browser";
overrides = x: {
postInstall = ''
echo "Building nyxt binary"
(
source "$out/lib/common-lisp-settings"/*-shell-config.sh
cd "$out/lib/common-lisp"/*/
makeFlags="''${makeFlags:-}"
make LISP=common-lisp.sh NYXT_INTERNAL_QUICKLISP=false PREFIX="$out" $makeFlags all
make LISP=common-lisp.sh NYXT_INTERNAL_QUICKLISP=false PREFIX="$out" $makeFlags install
cp nyxt "$out/bin/nyxt"
)
NIX_LISP_PRELAUNCH_HOOK='
nix_lisp_build_system nyxt/gtk-application \
"(asdf/system:component-entry-point (asdf:find-system :nyxt/gtk-application))" \
"" "(format *error-output* \"Alien objects:~%~s~%\" sb-alien::*shared-objects*)"
' "$out/bin/nyxt-lisp-launcher.sh"
cp "$out/lib/common-lisp/nyxt/nyxt" "$out/bin/"
'';
# Prevent nyxt from trying to obtain dependencies as submodules
makeFlags = [ "NYXT_SUBMODULES=false" ] ++ x.buildFlags or [];
patches = x.patches or [] ++ [
# Work around crash when opening _any_ URL
# https://github.com/atlas-engineer/nyxt/issues/1781
# https://github.com/NixOS/nixpkgs/issues/158005
(pkgs.fetchpatch {
name = "nyxt-webkit-disable-sandbox.patch";
url = "https://github.com/atlas-engineer/nyxt/commit/48ac0d8727f1ca1428188a1ab2c05b7be5f6cc51.patch";
sha256 = "0570mcfn5wmjha6jmfdgglp0w5b7rpfnv3flzn77clgbknwbxi0m";
})
];
};
deps = with pkgs.lispPackages; [
alexandria
bordeaux-threads
calispel
cl-css
cl-json
cl-markup
cl-ppcre
cl-ppcre-unicode
cl-prevalence
closer-mop
cl-containers
cl-qrencode
clss
cluffer
moptilities
dexador
enchant
file-attributes
iolib
local-time
log4cl
lparallel
mk-string-metrics
osicat
parenscript
quri
serapeum
spinneret
str
plump
swank
trivia
trivial-clipboard
trivial-features
trivial-garbage
trivial-package-local-nicknames
trivial-types
unix-opts
cl-html-diff
hu_dot_dwim_dot_defclass-star
cl-custom-hash-table
fset
cl-cffi-gtk
cl-webkit2
cl-gobject-introspection
];
src = pkgs.fetchFromGitHub {
owner = "atlas-engineer";
repo = "nyxt";
rev = version;
sha256 = "12l7ir3q29v06jx0zng5cvlbmap7p709ka3ik6x29lw334qshm9b";
};
packageName = "nyxt";
propagatedBuildInputs = [
pkgs.libressl.out
pkgs.webkitgtk
pkgs.sbcl
];
};
mgl = buildLispPackage rec {
baseName = "mgl";
version = "2021-10-07";
description = "MGL is a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more";
deps = with pkgs.lispPackages; [
alexandria closer-mop array-operations lla cl-reexport mgl-mat mgl-pax
named-readtables pythonic-string-reader
];
src = pkgs.fetchFromGitHub {
owner = "melisgl";
repo = "mgl";
rev = "e697791a9bcad3b6e7b3845246a2aa55238cfef7";
sha256 = "sha256:09sf7nq7nmf9q7bh3a5ygl2i2n0nhrx5fk2kv5ili0ckv7g9x72s";
# date = 2021-10-18T14:15+02:00
};
buildSystems = [ "mgl" "mgl/test" ];
packageName = "mgl";
parasites = [ "mgl/test" ];
asdFilesToKeep = [ "mgl.asd" "mgl-example.asd" "gnuplot/mgl-gnuplot.asd" "visuals/mgl-visuals.asd" ];
};
mgl-mat = buildLispPackage rec {
baseName = "mgl-mat";
version = "2021-10-11";
description = "Multi-dimensional arrays with FFI/CUDA support";
deps = with pkgs.lispPackages; [
alexandria bordeaux-threads cffi cffi-grovel cl-cuda flexi-streams ieee-floats
lla mgl-pax static-vectors trivial-garbage cl-fad
];
src = pkgs.fetchFromGitHub {
owner = "melisgl";
repo = "mgl-mat";
rev = "3710858bc876b1b86e50f1db2abe719e92d810e7";
sha256 = "sha256:1aa2382mi55rp8pd31dz4d94yhfzh30vkggcvmvdfrr4ngffj0dx";
# date = 2021-10-18T14:15+02:00
};
packageName = "mgl-mat";
buildSystems = [ "mgl-mat" "mgl-mat/test" ];
parasites = [ "mgl-mat/test" ];
asdFilesToKeep = [ "mgl-mat.asd" ];
};
};
in lispPackages

View File

@ -1,18 +0,0 @@
with import ../../../default.nix {};
runCommand "openssl-lib-marked" {} ''
mkdir -p "$out/lib"
for lib in ssl crypto; do
version="${lib.getVersion openssl}"
ln -s "${lib.getLib openssl}/lib/lib$lib.so" "$out/lib/lib$lib.so.$version"
version="$(echo "$version" | sed -re 's/[a-z]+$//')"
while test -n "$version"; do
ln -sfT "${lib.getLib openssl}/lib/lib$lib.so" "$out/lib/lib$lib.so.$version"
nextversion="''${version%.*}"
if test "$version" = "$nextversion"; then
version=
else
version="$nextversion"
fi
done
done
''

View File

@ -1,25 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "_1am";
version = "20141106-git";
description = "A minimal testing framework.";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/1am/2014-11-06/1am-20141106-git.tgz";
sha256 = "0vnnqd4fiq9z34i1k9gqczg3j6xllwba1f6nx0b82sgsdccmsly6";
};
packageName = "1am";
asdFilesToKeep = ["1am.asd"];
overrides = x: x;
}
/* (SYSTEM 1am DESCRIPTION A minimal testing framework. SHA256
0vnnqd4fiq9z34i1k9gqczg3j6xllwba1f6nx0b82sgsdccmsly6 URL
http://beta.quicklisp.org/archive/1am/2014-11-06/1am-20141106-git.tgz MD5
c5e83c329157518e3ebfeef63e4ac269 NAME 1am FILENAME _1am DEPS NIL
DEPENDENCIES NIL VERSION 20141106-git SIBLINGS NIL PARASITES NIL) */

View File

@ -1,39 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "_3bmd-ext-code-blocks";
version = "3bmd-20210411-git";
description = "extension to 3bmd implementing github style ``` delimited code blocks, with support for syntax highlighting using colorize, pygments, or chroma";
deps = [ args."_3bmd" args."alexandria" args."colorize" args."esrap" args."html-encode" args."split-sequence" args."trivial-with-current-source-form" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz";
sha256 = "1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp";
};
packageName = "3bmd-ext-code-blocks";
asdFilesToKeep = ["3bmd-ext-code-blocks.asd"];
overrides = x: x;
}
/* (SYSTEM 3bmd-ext-code-blocks DESCRIPTION
extension to 3bmd implementing github style ``` delimited code blocks, with support for syntax highlighting using colorize, pygments, or chroma
SHA256 1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp URL
http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz MD5
09f9290aa1708aeb469fb5154ab1a397 NAME 3bmd-ext-code-blocks FILENAME
_3bmd-ext-code-blocks DEPS
((NAME 3bmd FILENAME _3bmd) (NAME alexandria FILENAME alexandria)
(NAME colorize FILENAME colorize) (NAME esrap FILENAME esrap)
(NAME html-encode FILENAME html-encode)
(NAME split-sequence FILENAME split-sequence)
(NAME trivial-with-current-source-form FILENAME
trivial-with-current-source-form))
DEPENDENCIES
(3bmd alexandria colorize esrap html-encode split-sequence
trivial-with-current-source-form)
VERSION 3bmd-20210411-git SIBLINGS
(3bmd-ext-definition-lists 3bmd-ext-math 3bmd-ext-tables
3bmd-ext-wiki-links 3bmd-youtube-tests 3bmd-youtube 3bmd)
PARASITES NIL) */

View File

@ -1,34 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "_3bmd";
version = "20210411-git";
description = "markdown processor in CL using esrap parser.";
deps = [ args."alexandria" args."esrap" args."split-sequence" args."trivial-with-current-source-form" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz";
sha256 = "1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp";
};
packageName = "3bmd";
asdFilesToKeep = ["3bmd.asd"];
overrides = x: x;
}
/* (SYSTEM 3bmd DESCRIPTION markdown processor in CL using esrap parser. SHA256
1gwl3r8cffr8yldi0x7zdzbmngqhli2d19wsky5cf8h80m30k4vp URL
http://beta.quicklisp.org/archive/3bmd/2021-04-11/3bmd-20210411-git.tgz MD5
09f9290aa1708aeb469fb5154ab1a397 NAME 3bmd FILENAME _3bmd DEPS
((NAME alexandria FILENAME alexandria) (NAME esrap FILENAME esrap)
(NAME split-sequence FILENAME split-sequence)
(NAME trivial-with-current-source-form FILENAME
trivial-with-current-source-form))
DEPENDENCIES
(alexandria esrap split-sequence trivial-with-current-source-form) VERSION
20210411-git SIBLINGS
(3bmd-ext-code-blocks 3bmd-ext-definition-lists 3bmd-ext-math
3bmd-ext-tables 3bmd-ext-wiki-links 3bmd-youtube-tests 3bmd-youtube)
PARASITES NIL) */

View File

@ -1,40 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "access";
version = "20210124-git";
parasites = [ "access-test" ];
description = "A library providing functions that unify data-structure access for Common Lisp:
access and (setf access)";
deps = [ args."alexandria" args."anaphora" args."cl-interpol" args."cl-ppcre" args."cl-unicode" args."closer-mop" args."flexi-streams" args."iterate" args."lisp-unit2" args."named-readtables" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/access/2021-01-24/access-20210124-git.tgz";
sha256 = "1n4j15v1ikspchcbb0bn15kk3lh78f6bxk56cs4arimm8bisyqlq";
};
packageName = "access";
asdFilesToKeep = ["access.asd"];
overrides = x: x;
}
/* (SYSTEM access DESCRIPTION
A library providing functions that unify data-structure access for Common Lisp:
access and (setf access)
SHA256 1n4j15v1ikspchcbb0bn15kk3lh78f6bxk56cs4arimm8bisyqlq URL
http://beta.quicklisp.org/archive/access/2021-01-24/access-20210124-git.tgz
MD5 d2d7d9826cbfb3de568d05a4d6bacdbe NAME access FILENAME access DEPS
((NAME alexandria FILENAME alexandria) (NAME anaphora FILENAME anaphora)
(NAME cl-interpol FILENAME cl-interpol) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME cl-unicode FILENAME cl-unicode)
(NAME closer-mop FILENAME closer-mop)
(NAME flexi-streams FILENAME flexi-streams)
(NAME iterate FILENAME iterate) (NAME lisp-unit2 FILENAME lisp-unit2)
(NAME named-readtables FILENAME named-readtables))
DEPENDENCIES
(alexandria anaphora cl-interpol cl-ppcre cl-unicode closer-mop
flexi-streams iterate lisp-unit2 named-readtables)
VERSION 20210124-git SIBLINGS NIL PARASITES (access-test)) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "acclimation";
version = "20200925-git";
description = "Library supporting internationalization";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/acclimation/2020-09-25/acclimation-20200925-git.tgz";
sha256 = "11vw1h5zxicj5qxb1smiyjxafw8xk0isnzcf5g0lqis3y9ssqxbw";
};
packageName = "acclimation";
asdFilesToKeep = ["acclimation.asd"];
overrides = x: x;
}
/* (SYSTEM acclimation DESCRIPTION Library supporting internationalization
SHA256 11vw1h5zxicj5qxb1smiyjxafw8xk0isnzcf5g0lqis3y9ssqxbw URL
http://beta.quicklisp.org/archive/acclimation/2020-09-25/acclimation-20200925-git.tgz
MD5 8ce10864baef6fb0e11c78e2ee0b0ddb NAME acclimation FILENAME acclimation
DEPS NIL DEPENDENCIES NIL VERSION 20200925-git SIBLINGS
(acclimation-temperature) PARASITES NIL) */

View File

@ -1,29 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "agutil";
version = "20210531-git";
description = "A collection of utility functions not found in other utility libraries.";
deps = [ args."alexandria" args."closer-mop" args."optima" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/agutil/2021-05-31/agutil-20210531-git.tgz";
sha256 = "01shs4qbr0bzmx9134cm84zbh8whbi2s5xngapd2fl8ag1rda9q1";
};
packageName = "agutil";
asdFilesToKeep = ["agutil.asd"];
overrides = x: x;
}
/* (SYSTEM agutil DESCRIPTION
A collection of utility functions not found in other utility libraries.
SHA256 01shs4qbr0bzmx9134cm84zbh8whbi2s5xngapd2fl8ag1rda9q1 URL
http://beta.quicklisp.org/archive/agutil/2021-05-31/agutil-20210531-git.tgz
MD5 99de7cd320ae2696c1707ca5b55cf40a NAME agutil FILENAME agutil DEPS
((NAME alexandria FILENAME alexandria)
(NAME closer-mop FILENAME closer-mop) (NAME optima FILENAME optima))
DEPENDENCIES (alexandria closer-mop optima) VERSION 20210531-git SIBLINGS
NIL PARASITES NIL) */

View File

@ -1,27 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "alexandria";
version = "20211209-git";
description = "Alexandria is a collection of portable public domain utilities.";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/alexandria/2021-12-09/alexandria-20211209-git.tgz";
sha256 = "13xyajg5n3ad3x2hrmzni1w87b0wc41wn7manbvc3dc5n55afxk0";
};
packageName = "alexandria";
asdFilesToKeep = ["alexandria.asd"];
overrides = x: x;
}
/* (SYSTEM alexandria DESCRIPTION
Alexandria is a collection of portable public domain utilities. SHA256
13xyajg5n3ad3x2hrmzni1w87b0wc41wn7manbvc3dc5n55afxk0 URL
http://beta.quicklisp.org/archive/alexandria/2021-12-09/alexandria-20211209-git.tgz
MD5 4f578a956567ea0d6c99c2babd1752f3 NAME alexandria FILENAME alexandria
DEPS NIL DEPENDENCIES NIL VERSION 20211209-git SIBLINGS (alexandria-tests)
PARASITES NIL) */

View File

@ -1,28 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "anaphora";
version = "20211209-git";
parasites = [ "anaphora/test" ];
description = "The Anaphoric Macro Package from Hell";
deps = [ args."rt" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/anaphora/2021-12-09/anaphora-20211209-git.tgz";
sha256 = "1pi166qwf3zwswhgq8c4r84rl5d6lnn0rkb3cdf5afyxmminsadg";
};
packageName = "anaphora";
asdFilesToKeep = ["anaphora.asd"];
overrides = x: x;
}
/* (SYSTEM anaphora DESCRIPTION The Anaphoric Macro Package from Hell SHA256
1pi166qwf3zwswhgq8c4r84rl5d6lnn0rkb3cdf5afyxmminsadg URL
http://beta.quicklisp.org/archive/anaphora/2021-12-09/anaphora-20211209-git.tgz
MD5 81827cd43d29293e967916bb11c4df88 NAME anaphora FILENAME anaphora DEPS
((NAME rt FILENAME rt)) DEPENDENCIES (rt) VERSION 20211209-git SIBLINGS NIL
PARASITES (anaphora/test)) */

View File

@ -1,35 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "arnesi";
version = "20170403-git";
parasites = [ "arnesi/cl-ppcre-extras" "arnesi/slime-extras" ];
description = "A bag-of-tools utilities library used to aid in implementing the bese.it toolkit";
deps = [ args."alexandria" args."cl-ppcre" args."closer-mop" args."collectors" args."iterate" args."swank" args."symbol-munger" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/arnesi/2017-04-03/arnesi-20170403-git.tgz";
sha256 = "01kirjpgv5pgbcdxjrnw3ld4jw7wrqm3rgqnxwac4gxaphr2s6q4";
};
packageName = "arnesi";
asdFilesToKeep = ["arnesi.asd"];
overrides = x: x;
}
/* (SYSTEM arnesi DESCRIPTION
A bag-of-tools utilities library used to aid in implementing the bese.it toolkit
SHA256 01kirjpgv5pgbcdxjrnw3ld4jw7wrqm3rgqnxwac4gxaphr2s6q4 URL
http://beta.quicklisp.org/archive/arnesi/2017-04-03/arnesi-20170403-git.tgz
MD5 bbb34e1a646b2cc489766690c741d964 NAME arnesi FILENAME arnesi DEPS
((NAME alexandria FILENAME alexandria) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME closer-mop FILENAME closer-mop)
(NAME collectors FILENAME collectors) (NAME iterate FILENAME iterate)
(NAME swank FILENAME swank) (NAME symbol-munger FILENAME symbol-munger))
DEPENDENCIES
(alexandria cl-ppcre closer-mop collectors iterate swank symbol-munger)
VERSION 20170403-git SIBLINGS NIL PARASITES
(arnesi/cl-ppcre-extras arnesi/slime-extras)) */

View File

@ -1,32 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "array-operations";
version = "20210411-git";
parasites = [ "array-operations/tests" ];
description = "Simple array operations library for Common Lisp.";
deps = [ args."alexandria" args."anaphora" args."clunit2" args."let-plus" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/array-operations/2021-04-11/array-operations-20210411-git.tgz";
sha256 = "0l6wxd3a1xdcmcsc93prq8ymainfsy15imiwnaik1i9g94fcbjz8";
};
packageName = "array-operations";
asdFilesToKeep = ["array-operations.asd"];
overrides = x: x;
}
/* (SYSTEM array-operations DESCRIPTION
Simple array operations library for Common Lisp. SHA256
0l6wxd3a1xdcmcsc93prq8ymainfsy15imiwnaik1i9g94fcbjz8 URL
http://beta.quicklisp.org/archive/array-operations/2021-04-11/array-operations-20210411-git.tgz
MD5 902c6034c006bc6ca88ef59e7ff2b1aa NAME array-operations FILENAME
array-operations DEPS
((NAME alexandria FILENAME alexandria) (NAME anaphora FILENAME anaphora)
(NAME clunit2 FILENAME clunit2) (NAME let-plus FILENAME let-plus))
DEPENDENCIES (alexandria anaphora clunit2 let-plus) VERSION 20210411-git
SIBLINGS NIL PARASITES (array-operations/tests)) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "array-utils";
version = "20201220-git";
description = "A few utilities for working with arrays.";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/array-utils/2020-12-20/array-utils-20201220-git.tgz";
sha256 = "11y6k8gzzcj00jyccg2k9nh6rvivcvh23z4yzjfly7adygd3n717";
};
packageName = "array-utils";
asdFilesToKeep = ["array-utils.asd"];
overrides = x: x;
}
/* (SYSTEM array-utils DESCRIPTION A few utilities for working with arrays.
SHA256 11y6k8gzzcj00jyccg2k9nh6rvivcvh23z4yzjfly7adygd3n717 URL
http://beta.quicklisp.org/archive/array-utils/2020-12-20/array-utils-20201220-git.tgz
MD5 d6ed906f28c46b2ab0335ec1fc05f8af NAME array-utils FILENAME array-utils
DEPS NIL DEPENDENCIES NIL VERSION 20201220-git SIBLINGS (array-utils-test)
PARASITES NIL) */

View File

@ -1,31 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "arrows";
version = "20181018-git";
parasites = [ "arrows/test" ];
description = "Implements -> and ->> from Clojure, as well as several expansions on the
idea.";
deps = [ args."hu_dot_dwim_dot_stefil" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/arrows/2018-10-18/arrows-20181018-git.tgz";
sha256 = "1b13pnn71z1dv1cwysh6p5jfgjsp3q8ivsdxfspl1hg1nh9mqa7r";
};
packageName = "arrows";
asdFilesToKeep = ["arrows.asd"];
overrides = x: x;
}
/* (SYSTEM arrows DESCRIPTION
Implements -> and ->> from Clojure, as well as several expansions on the
idea.
SHA256 1b13pnn71z1dv1cwysh6p5jfgjsp3q8ivsdxfspl1hg1nh9mqa7r URL
http://beta.quicklisp.org/archive/arrows/2018-10-18/arrows-20181018-git.tgz
MD5 c60b5d79680de19baad018a0fe87bc48 NAME arrows FILENAME arrows DEPS
((NAME hu.dwim.stefil FILENAME hu_dot_dwim_dot_stefil)) DEPENDENCIES
(hu.dwim.stefil) VERSION 20181018-git SIBLINGS NIL PARASITES (arrows/test)) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "asdf-package-system";
version = "20150608-git";
description = "System lacks description";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/asdf-package-system/2015-06-08/asdf-package-system-20150608-git.tgz";
sha256 = "17lfwfc15hcag8a2jsaxkx42wmz2mwkvxf6vb2h9cim7dwsnyy29";
};
packageName = "asdf-package-system";
asdFilesToKeep = ["asdf-package-system.asd"];
overrides = x: x;
}
/* (SYSTEM asdf-package-system DESCRIPTION System lacks description SHA256
17lfwfc15hcag8a2jsaxkx42wmz2mwkvxf6vb2h9cim7dwsnyy29 URL
http://beta.quicklisp.org/archive/asdf-package-system/2015-06-08/asdf-package-system-20150608-git.tgz
MD5 9eee9d811aec4894843ac1d8ae6cbccd NAME asdf-package-system FILENAME
asdf-package-system DEPS NIL DEPENDENCIES NIL VERSION 20150608-git SIBLINGS
NIL PARASITES NIL) */

View File

@ -1,27 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "asdf-system-connections";
version = "20170124-git";
description = "Allows for ASDF system to be connected so that auto-loading may occur.";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/asdf-system-connections/2017-01-24/asdf-system-connections-20170124-git.tgz";
sha256 = "0h8237bq3niw6glcsps77n1ykcmc5bjkcrbjyxjgkmcb1c5kwwpq";
};
packageName = "asdf-system-connections";
asdFilesToKeep = ["asdf-system-connections.asd"];
overrides = x: x;
}
/* (SYSTEM asdf-system-connections DESCRIPTION
Allows for ASDF system to be connected so that auto-loading may occur.
SHA256 0h8237bq3niw6glcsps77n1ykcmc5bjkcrbjyxjgkmcb1c5kwwpq URL
http://beta.quicklisp.org/archive/asdf-system-connections/2017-01-24/asdf-system-connections-20170124-git.tgz
MD5 23bdbb69c433568e3e15ed705b803992 NAME asdf-system-connections FILENAME
asdf-system-connections DEPS NIL DEPENDENCIES NIL VERSION 20170124-git
SIBLINGS NIL PARASITES NIL) */

View File

@ -1,28 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "babel";
version = "20200925-git";
description = "Babel, a charset conversion library.";
deps = [ args."alexandria" args."trivial-features" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/babel/2020-09-25/babel-20200925-git.tgz";
sha256 = "1hpjm2whw7zla9igzj50y3nibii0mfg2a6y6nslaf5vpkni88jfi";
};
packageName = "babel";
asdFilesToKeep = ["babel.asd"];
overrides = x: x;
}
/* (SYSTEM babel DESCRIPTION Babel, a charset conversion library. SHA256
1hpjm2whw7zla9igzj50y3nibii0mfg2a6y6nslaf5vpkni88jfi URL
http://beta.quicklisp.org/archive/babel/2020-09-25/babel-20200925-git.tgz
MD5 7f64d3be80bcba19d9caeaede5dea6d8 NAME babel FILENAME babel DEPS
((NAME alexandria FILENAME alexandria)
(NAME trivial-features FILENAME trivial-features))
DEPENDENCIES (alexandria trivial-features) VERSION 20200925-git SIBLINGS
(babel-streams babel-tests) PARASITES NIL) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "binomial-heap";
version = "20130420-git";
description = "A compact binomial heap implementation.";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/binomial-heap/2013-04-20/binomial-heap-20130420-git.tgz";
sha256 = "0fl062psd0jn94raip46lq342xmsq0xgrql6v5f9j9w0ps0dg2ap";
};
packageName = "binomial-heap";
asdFilesToKeep = ["binomial-heap.asd"];
overrides = x: x;
}
/* (SYSTEM binomial-heap DESCRIPTION A compact binomial heap implementation.
SHA256 0fl062psd0jn94raip46lq342xmsq0xgrql6v5f9j9w0ps0dg2ap URL
http://beta.quicklisp.org/archive/binomial-heap/2013-04-20/binomial-heap-20130420-git.tgz
MD5 ca40cb01b88a3fe902cc4cc25fb2d242 NAME binomial-heap FILENAME
binomial-heap DEPS NIL DEPENDENCIES NIL VERSION 20130420-git SIBLINGS NIL
PARASITES NIL) */

View File

@ -1,28 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "binpack";
version = "20201220-git";
parasites = [ "binpack/2" ];
description = "Rectangle packer for sprite/texture atlases";
deps = [ args."alexandria" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/binpack/2020-12-20/binpack-20201220-git.tgz";
sha256 = "1kyl19kjsii2nrbf229c5fb3bjw7r25736f991g2j8vig991imwm";
};
packageName = "binpack";
asdFilesToKeep = ["binpack.asd"];
overrides = x: x;
}
/* (SYSTEM binpack DESCRIPTION Rectangle packer for sprite/texture atlases
SHA256 1kyl19kjsii2nrbf229c5fb3bjw7r25736f991g2j8vig991imwm URL
http://beta.quicklisp.org/archive/binpack/2020-12-20/binpack-20201220-git.tgz
MD5 1ac4eaa76586091edb77111ea033f316 NAME binpack FILENAME binpack DEPS
((NAME alexandria FILENAME alexandria)) DEPENDENCIES (alexandria) VERSION
20201220-git SIBLINGS (binpack-test) PARASITES (binpack/2)) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "blackbird";
version = "20160531-git";
description = "A promise implementation for Common Lisp.";
deps = [ args."vom" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/blackbird/2016-05-31/blackbird-20160531-git.tgz";
sha256 = "0l053fb5fdz1q6dyfgys6nmbairc3aig4wjl5abpf8b1paf7gzq9";
};
packageName = "blackbird";
asdFilesToKeep = ["blackbird.asd"];
overrides = x: x;
}
/* (SYSTEM blackbird DESCRIPTION A promise implementation for Common Lisp.
SHA256 0l053fb5fdz1q6dyfgys6nmbairc3aig4wjl5abpf8b1paf7gzq9 URL
http://beta.quicklisp.org/archive/blackbird/2016-05-31/blackbird-20160531-git.tgz
MD5 5cb13dc06a0eae8dcba14714d2b5365d NAME blackbird FILENAME blackbird DEPS
((NAME vom FILENAME vom)) DEPENDENCIES (vom) VERSION 20160531-git SIBLINGS
(blackbird-test) PARASITES NIL) */

View File

@ -1,31 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "bordeaux-threads";
version = "v0.8.8";
parasites = [ "bordeaux-threads/test" ];
description = "Bordeaux Threads makes writing portable multi-threaded apps simple.";
deps = [ args."alexandria" args."fiveam" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/bordeaux-threads/2020-06-10/bordeaux-threads-v0.8.8.tgz";
sha256 = "1ppb7lvr796k1j4hi0jnp717v9zxy6vq4f5cyzgn7svg1ic6l0pp";
};
packageName = "bordeaux-threads";
asdFilesToKeep = ["bordeaux-threads.asd"];
overrides = x: x;
}
/* (SYSTEM bordeaux-threads DESCRIPTION
Bordeaux Threads makes writing portable multi-threaded apps simple. SHA256
1ppb7lvr796k1j4hi0jnp717v9zxy6vq4f5cyzgn7svg1ic6l0pp URL
http://beta.quicklisp.org/archive/bordeaux-threads/2020-06-10/bordeaux-threads-v0.8.8.tgz
MD5 1922316721bcaa10142ed07c31b178e5 NAME bordeaux-threads FILENAME
bordeaux-threads DEPS
((NAME alexandria FILENAME alexandria) (NAME fiveam FILENAME fiveam))
DEPENDENCIES (alexandria fiveam) VERSION v0.8.8 SIBLINGS NIL PARASITES
(bordeaux-threads/test)) */

View File

@ -1,49 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "buildnode-xhtml";
version = "buildnode-20170403-git";
description = "Tool for building up an xml dom of an excel spreadsheet nicely.";
deps = [ args."alexandria" args."babel" args."buildnode" args."cl-interpol" args."cl-ppcre" args."cl-unicode" args."closer-mop" args."closure-common" args."closure-html" args."collectors" args."cxml" args."flexi-streams" args."iterate" args."named-readtables" args."puri" args."split-sequence" args."swank" args."symbol-munger" args."trivial-features" args."trivial-gray-streams" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/buildnode/2017-04-03/buildnode-20170403-git.tgz";
sha256 = "1gb3zsp4g31iscvvhvb99z0i7lfn1g3493q6sgpr46fmn2vdwwb6";
};
packageName = "buildnode-xhtml";
asdFilesToKeep = ["buildnode-xhtml.asd"];
overrides = x: x;
}
/* (SYSTEM buildnode-xhtml DESCRIPTION
Tool for building up an xml dom of an excel spreadsheet nicely. SHA256
1gb3zsp4g31iscvvhvb99z0i7lfn1g3493q6sgpr46fmn2vdwwb6 URL
http://beta.quicklisp.org/archive/buildnode/2017-04-03/buildnode-20170403-git.tgz
MD5 b917f0d6c20489febbef0d5b954c350d NAME buildnode-xhtml FILENAME
buildnode-xhtml DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME buildnode FILENAME buildnode)
(NAME cl-interpol FILENAME cl-interpol) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME cl-unicode FILENAME cl-unicode)
(NAME closer-mop FILENAME closer-mop)
(NAME closure-common FILENAME closure-common)
(NAME closure-html FILENAME closure-html)
(NAME collectors FILENAME collectors) (NAME cxml FILENAME cxml)
(NAME flexi-streams FILENAME flexi-streams)
(NAME iterate FILENAME iterate)
(NAME named-readtables FILENAME named-readtables)
(NAME puri FILENAME puri) (NAME split-sequence FILENAME split-sequence)
(NAME swank FILENAME swank) (NAME symbol-munger FILENAME symbol-munger)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-gray-streams FILENAME trivial-gray-streams))
DEPENDENCIES
(alexandria babel buildnode cl-interpol cl-ppcre cl-unicode closer-mop
closure-common closure-html collectors cxml flexi-streams iterate
named-readtables puri split-sequence swank symbol-munger trivial-features
trivial-gray-streams)
VERSION buildnode-20170403-git SIBLINGS
(buildnode-excel buildnode-html5 buildnode-kml buildnode-xul buildnode)
PARASITES NIL) */

View File

@ -1,50 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "buildnode";
version = "20170403-git";
parasites = [ "buildnode-test" ];
description = "Tool for building up an xml dom nicely.";
deps = [ args."alexandria" args."babel" args."buildnode-xhtml" args."cl-interpol" args."cl-ppcre" args."cl-unicode" args."closer-mop" args."closure-common" args."closure-html" args."collectors" args."cxml" args."flexi-streams" args."iterate" args."lisp-unit2" args."named-readtables" args."puri" args."split-sequence" args."swank" args."symbol-munger" args."trivial-features" args."trivial-gray-streams" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/buildnode/2017-04-03/buildnode-20170403-git.tgz";
sha256 = "1gb3zsp4g31iscvvhvb99z0i7lfn1g3493q6sgpr46fmn2vdwwb6";
};
packageName = "buildnode";
asdFilesToKeep = ["buildnode.asd"];
overrides = x: x;
}
/* (SYSTEM buildnode DESCRIPTION Tool for building up an xml dom nicely. SHA256
1gb3zsp4g31iscvvhvb99z0i7lfn1g3493q6sgpr46fmn2vdwwb6 URL
http://beta.quicklisp.org/archive/buildnode/2017-04-03/buildnode-20170403-git.tgz
MD5 b917f0d6c20489febbef0d5b954c350d NAME buildnode FILENAME buildnode DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME buildnode-xhtml FILENAME buildnode-xhtml)
(NAME cl-interpol FILENAME cl-interpol) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME cl-unicode FILENAME cl-unicode)
(NAME closer-mop FILENAME closer-mop)
(NAME closure-common FILENAME closure-common)
(NAME closure-html FILENAME closure-html)
(NAME collectors FILENAME collectors) (NAME cxml FILENAME cxml)
(NAME flexi-streams FILENAME flexi-streams)
(NAME iterate FILENAME iterate) (NAME lisp-unit2 FILENAME lisp-unit2)
(NAME named-readtables FILENAME named-readtables)
(NAME puri FILENAME puri) (NAME split-sequence FILENAME split-sequence)
(NAME swank FILENAME swank) (NAME symbol-munger FILENAME symbol-munger)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-gray-streams FILENAME trivial-gray-streams))
DEPENDENCIES
(alexandria babel buildnode-xhtml cl-interpol cl-ppcre cl-unicode
closer-mop closure-common closure-html collectors cxml flexi-streams
iterate lisp-unit2 named-readtables puri split-sequence swank
symbol-munger trivial-features trivial-gray-streams)
VERSION 20170403-git SIBLINGS
(buildnode-excel buildnode-html5 buildnode-kml buildnode-xhtml
buildnode-xul)
PARASITES (buildnode-test)) */

View File

@ -1,36 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "calispel";
version = "20170830-git";
parasites = [ "calispel-test" ];
description = "Thread-safe message-passing channels, in the style of
the occam programming language.";
deps = [ args."alexandria" args."bordeaux-threads" args."eager-future2" args."jpl-queues" args."jpl-util" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/calispel/2017-08-30/calispel-20170830-git.tgz";
sha256 = "0qwmzmyh63jlw5bdv4wf458n1dz9k77gd5b4ix1kd6xrzx247k7i";
};
packageName = "calispel";
asdFilesToKeep = ["calispel.asd"];
overrides = x: x;
}
/* (SYSTEM calispel DESCRIPTION
Thread-safe message-passing channels, in the style of
the occam programming language.
SHA256 0qwmzmyh63jlw5bdv4wf458n1dz9k77gd5b4ix1kd6xrzx247k7i URL
http://beta.quicklisp.org/archive/calispel/2017-08-30/calispel-20170830-git.tgz
MD5 1fba6e4b2055f5d1f0a78387e29552b1 NAME calispel FILENAME calispel DEPS
((NAME alexandria FILENAME alexandria)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME eager-future2 FILENAME eager-future2)
(NAME jpl-queues FILENAME jpl-queues) (NAME jpl-util FILENAME jpl-util))
DEPENDENCIES
(alexandria bordeaux-threads eager-future2 jpl-queues jpl-util) VERSION
20170830-git SIBLINGS NIL PARASITES (calispel-test)) */

View File

@ -1,31 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cffi-grovel";
version = "cffi_0.24.1";
description = "The CFFI Groveller";
deps = [ args."alexandria" args."babel" args."cffi" args."cffi-toolchain" args."trivial-features" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz";
sha256 = "1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh";
};
packageName = "cffi-grovel";
asdFilesToKeep = ["cffi-grovel.asd"];
overrides = x: x;
}
/* (SYSTEM cffi-grovel DESCRIPTION The CFFI Groveller SHA256
1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh URL
http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz MD5
c3df5c460e00e5af8b8bd2cd03a4b5cc NAME cffi-grovel FILENAME cffi-grovel DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME cffi FILENAME cffi) (NAME cffi-toolchain FILENAME cffi-toolchain)
(NAME trivial-features FILENAME trivial-features))
DEPENDENCIES (alexandria babel cffi cffi-toolchain trivial-features)
VERSION cffi_0.24.1 SIBLINGS
(cffi-examples cffi-libffi cffi-tests cffi-toolchain cffi-uffi-compat cffi)
PARASITES NIL) */

View File

@ -1,32 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cffi-toolchain";
version = "cffi_0.24.1";
description = "The CFFI toolchain";
deps = [ args."alexandria" args."asdf" args."babel" args."cffi" args."trivial-features" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz";
sha256 = "1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh";
};
packageName = "cffi-toolchain";
asdFilesToKeep = ["cffi-toolchain.asd"];
overrides = x: x;
}
/* (SYSTEM cffi-toolchain DESCRIPTION The CFFI toolchain SHA256
1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh URL
http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz MD5
c3df5c460e00e5af8b8bd2cd03a4b5cc NAME cffi-toolchain FILENAME
cffi-toolchain DEPS
((NAME alexandria FILENAME alexandria) (NAME asdf FILENAME asdf)
(NAME babel FILENAME babel) (NAME cffi FILENAME cffi)
(NAME trivial-features FILENAME trivial-features))
DEPENDENCIES (alexandria asdf babel cffi trivial-features) VERSION
cffi_0.24.1 SIBLINGS
(cffi-examples cffi-grovel cffi-libffi cffi-tests cffi-uffi-compat cffi)
PARASITES NIL) */

View File

@ -1,32 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cffi-uffi-compat";
version = "cffi_0.24.1";
description = "UFFI Compatibility Layer for CFFI";
deps = [ args."alexandria" args."babel" args."cffi" args."trivial-features" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz";
sha256 = "1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh";
};
packageName = "cffi-uffi-compat";
asdFilesToKeep = ["cffi-uffi-compat.asd"];
overrides = x: x;
}
/* (SYSTEM cffi-uffi-compat DESCRIPTION UFFI Compatibility Layer for CFFI
SHA256 1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh URL
http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz MD5
c3df5c460e00e5af8b8bd2cd03a4b5cc NAME cffi-uffi-compat FILENAME
cffi-uffi-compat DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME cffi FILENAME cffi)
(NAME trivial-features FILENAME trivial-features))
DEPENDENCIES (alexandria babel cffi trivial-features) VERSION cffi_0.24.1
SIBLINGS
(cffi-examples cffi-grovel cffi-libffi cffi-tests cffi-toolchain cffi)
PARASITES NIL) */

View File

@ -1,35 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cffi";
version = "cffi_0.24.1";
parasites = [ "cffi/c2ffi" "cffi/c2ffi-generator" ];
description = "The Common Foreign Function Interface";
deps = [ args."alexandria" args."babel" args."cl-json" args."cl-ppcre" args."trivial-features" args."uiop" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz";
sha256 = "1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh";
};
packageName = "cffi";
asdFilesToKeep = ["cffi.asd"];
overrides = x: x;
}
/* (SYSTEM cffi DESCRIPTION The Common Foreign Function Interface SHA256
1ir8a4rrnilj9f8rv1hh6fhkg2wp8z8zcf9hiijcix50pabxq8qh URL
http://beta.quicklisp.org/archive/cffi/2021-04-11/cffi_0.24.1.tgz MD5
c3df5c460e00e5af8b8bd2cd03a4b5cc NAME cffi FILENAME cffi DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME cl-json FILENAME cl-json) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME trivial-features FILENAME trivial-features)
(NAME uiop FILENAME uiop))
DEPENDENCIES (alexandria babel cl-json cl-ppcre trivial-features uiop)
VERSION cffi_0.24.1 SIBLINGS
(cffi-examples cffi-grovel cffi-libffi cffi-tests cffi-toolchain
cffi-uffi-compat)
PARASITES (cffi/c2ffi cffi/c2ffi-generator)) */

View File

@ -1,32 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "chanl";
version = "20210411-git";
parasites = [ "chanl/examples" "chanl/tests" ];
description = "Communicating Sequential Process support for Common Lisp";
deps = [ args."alexandria" args."bordeaux-threads" args."fiveam" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/chanl/2021-04-11/chanl-20210411-git.tgz";
sha256 = "1c1yiw616q5hv6vzyg1y4kg68v94p37s5jrq387rwadfnnf46rgi";
};
packageName = "chanl";
asdFilesToKeep = ["chanl.asd"];
overrides = x: x;
}
/* (SYSTEM chanl DESCRIPTION
Communicating Sequential Process support for Common Lisp SHA256
1c1yiw616q5hv6vzyg1y4kg68v94p37s5jrq387rwadfnnf46rgi URL
http://beta.quicklisp.org/archive/chanl/2021-04-11/chanl-20210411-git.tgz
MD5 efaa5705b5feaa718290d25a95e2a684 NAME chanl FILENAME chanl DEPS
((NAME alexandria FILENAME alexandria)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME fiveam FILENAME fiveam))
DEPENDENCIES (alexandria bordeaux-threads fiveam) VERSION 20210411-git
SIBLINGS NIL PARASITES (chanl/examples chanl/tests)) */

View File

@ -1,32 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "check-it";
version = "20150709-git";
parasites = [ "check-it-test" ];
description = "A randomized property-based testing tool for Common Lisp.";
deps = [ args."alexandria" args."closer-mop" args."optima" args."stefil" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/check-it/2015-07-09/check-it-20150709-git.tgz";
sha256 = "1bx3ndkkl3w7clkqplhy6c2sz46pcp5w76j610gynzv7scz72iw2";
};
packageName = "check-it";
asdFilesToKeep = ["check-it.asd"];
overrides = x: x;
}
/* (SYSTEM check-it DESCRIPTION
A randomized property-based testing tool for Common Lisp. SHA256
1bx3ndkkl3w7clkqplhy6c2sz46pcp5w76j610gynzv7scz72iw2 URL
http://beta.quicklisp.org/archive/check-it/2015-07-09/check-it-20150709-git.tgz
MD5 0baae55e5a9c8c884202cbc51e634c42 NAME check-it FILENAME check-it DEPS
((NAME alexandria FILENAME alexandria)
(NAME closer-mop FILENAME closer-mop) (NAME optima FILENAME optima)
(NAME stefil FILENAME stefil))
DEPENDENCIES (alexandria closer-mop optima stefil) VERSION 20150709-git
SIBLINGS NIL PARASITES (check-it-test)) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "chipz";
version = "20210807-git";
description = "A library for decompressing deflate, zlib, and gzip data";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/chipz/2021-08-07/chipz-20210807-git.tgz";
sha256 = "0g7xhh4yq9azjq7gnszaq2kbxima2q30apb3rrglc1ign973hr8x";
};
packageName = "chipz";
asdFilesToKeep = ["chipz.asd"];
overrides = x: x;
}
/* (SYSTEM chipz DESCRIPTION
A library for decompressing deflate, zlib, and gzip data SHA256
0g7xhh4yq9azjq7gnszaq2kbxima2q30apb3rrglc1ign973hr8x URL
http://beta.quicklisp.org/archive/chipz/2021-08-07/chipz-20210807-git.tgz
MD5 11438e3bc60c39294c337cb232ae8040 NAME chipz FILENAME chipz DEPS NIL
DEPENDENCIES NIL VERSION 20210807-git SIBLINGS NIL PARASITES NIL) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "chunga";
version = "20200427-git";
description = "System lacks description";
deps = [ args."trivial-gray-streams" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/chunga/2020-04-27/chunga-20200427-git.tgz";
sha256 = "0p6dlnan6raincd682brcjbklyvmkfkhz0yzp2bkfw67s9615bkk";
};
packageName = "chunga";
asdFilesToKeep = ["chunga.asd"];
overrides = x: x;
}
/* (SYSTEM chunga DESCRIPTION System lacks description SHA256
0p6dlnan6raincd682brcjbklyvmkfkhz0yzp2bkfw67s9615bkk URL
http://beta.quicklisp.org/archive/chunga/2020-04-27/chunga-20200427-git.tgz
MD5 ec31aa63a1b594a197ad45e5e65c4cc4 NAME chunga FILENAME chunga DEPS
((NAME trivial-gray-streams FILENAME trivial-gray-streams)) DEPENDENCIES
(trivial-gray-streams) VERSION 20200427-git SIBLINGS NIL PARASITES NIL) */

View File

@ -1,37 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "circular-streams";
version = "20161204-git";
description = "Circularly readable streams for Common Lisp";
deps = [ args."alexandria" args."babel" args."cffi" args."cffi-grovel" args."cffi-toolchain" args."fast-io" args."static-vectors" args."trivial-features" args."trivial-gray-streams" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/circular-streams/2016-12-04/circular-streams-20161204-git.tgz";
sha256 = "1i29b9sciqs5x59hlkdj2r4siyqgrwj5hb4lnc80jgfqvzbq4128";
};
packageName = "circular-streams";
asdFilesToKeep = ["circular-streams.asd"];
overrides = x: x;
}
/* (SYSTEM circular-streams DESCRIPTION
Circularly readable streams for Common Lisp SHA256
1i29b9sciqs5x59hlkdj2r4siyqgrwj5hb4lnc80jgfqvzbq4128 URL
http://beta.quicklisp.org/archive/circular-streams/2016-12-04/circular-streams-20161204-git.tgz
MD5 2383f3b82fa3335d9106e1354a678db8 NAME circular-streams FILENAME
circular-streams DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME cffi FILENAME cffi) (NAME cffi-grovel FILENAME cffi-grovel)
(NAME cffi-toolchain FILENAME cffi-toolchain)
(NAME fast-io FILENAME fast-io)
(NAME static-vectors FILENAME static-vectors)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-gray-streams FILENAME trivial-gray-streams))
DEPENDENCIES
(alexandria babel cffi cffi-grovel cffi-toolchain fast-io static-vectors
trivial-features trivial-gray-streams)
VERSION 20161204-git SIBLINGS (circular-streams-test) PARASITES NIL) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-aa";
version = "cl-vectors-20180228-git";
description = "cl-aa: polygon rasterizer";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-vectors/2018-02-28/cl-vectors-20180228-git.tgz";
sha256 = "0fcypjfzqra8ryb4nx1vx1fqy7fwvyz3f443qkjg2z81akhkscly";
};
packageName = "cl-aa";
asdFilesToKeep = ["cl-aa.asd"];
overrides = x: x;
}
/* (SYSTEM cl-aa DESCRIPTION cl-aa: polygon rasterizer SHA256
0fcypjfzqra8ryb4nx1vx1fqy7fwvyz3f443qkjg2z81akhkscly URL
http://beta.quicklisp.org/archive/cl-vectors/2018-02-28/cl-vectors-20180228-git.tgz
MD5 9d9629786d4f2c19c15cc6cd3049c343 NAME cl-aa FILENAME cl-aa DEPS NIL
DEPENDENCIES NIL VERSION cl-vectors-20180228-git SIBLINGS
(cl-aa-misc cl-paths-ttf cl-paths cl-vectors) PARASITES NIL) */

View File

@ -1,26 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-annot";
version = "20150608-git";
description = "Python-like Annotation Syntax for Common Lisp";
deps = [ args."alexandria" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-annot/2015-06-08/cl-annot-20150608-git.tgz";
sha256 = "0ixsp20rk498phv3iivipn3qbw7a7x260x63hc6kpv2s746lpdg3";
};
packageName = "cl-annot";
asdFilesToKeep = ["cl-annot.asd"];
overrides = x: x;
}
/* (SYSTEM cl-annot DESCRIPTION Python-like Annotation Syntax for Common Lisp
SHA256 0ixsp20rk498phv3iivipn3qbw7a7x260x63hc6kpv2s746lpdg3 URL
http://beta.quicklisp.org/archive/cl-annot/2015-06-08/cl-annot-20150608-git.tgz
MD5 35d8f79311bda4dd86002d11edcd0a21 NAME cl-annot FILENAME cl-annot DEPS
((NAME alexandria FILENAME alexandria)) DEPENDENCIES (alexandria) VERSION
20150608-git SIBLINGS NIL PARASITES NIL) */

View File

@ -1,25 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-anonfun";
version = "20111203-git";
description = "Anonymous function helpers for Common Lisp";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-anonfun/2011-12-03/cl-anonfun-20111203-git.tgz";
sha256 = "16r3v3yba41smkqpz0qvzabkxashl39klfb6vxhzbly696x87p1m";
};
packageName = "cl-anonfun";
asdFilesToKeep = ["cl-anonfun.asd"];
overrides = x: x;
}
/* (SYSTEM cl-anonfun DESCRIPTION Anonymous function helpers for Common Lisp
SHA256 16r3v3yba41smkqpz0qvzabkxashl39klfb6vxhzbly696x87p1m URL
http://beta.quicklisp.org/archive/cl-anonfun/2011-12-03/cl-anonfun-20111203-git.tgz
MD5 915bda1a7653d42090f8d20a1ad85d0b NAME cl-anonfun FILENAME cl-anonfun
DEPS NIL DEPENDENCIES NIL VERSION 20111203-git SIBLINGS NIL PARASITES NIL) */

View File

@ -1,30 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-ansi-text";
version = "20211020-git";
description = "ANSI control string characters, focused on color";
deps = [ args."alexandria" args."cl-colors2" args."cl-ppcre" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-ansi-text/2021-10-20/cl-ansi-text-20211020-git.tgz";
sha256 = "1lmxmdf4sm7apkczp0y07rlsayc5adyv2i85r6p7s60w6sianjr6";
};
packageName = "cl-ansi-text";
asdFilesToKeep = ["cl-ansi-text.asd"];
overrides = x: x;
}
/* (SYSTEM cl-ansi-text DESCRIPTION
ANSI control string characters, focused on color SHA256
1lmxmdf4sm7apkczp0y07rlsayc5adyv2i85r6p7s60w6sianjr6 URL
http://beta.quicklisp.org/archive/cl-ansi-text/2021-10-20/cl-ansi-text-20211020-git.tgz
MD5 5411766beeb4180218b449454b67837f NAME cl-ansi-text FILENAME
cl-ansi-text DEPS
((NAME alexandria FILENAME alexandria)
(NAME cl-colors2 FILENAME cl-colors2) (NAME cl-ppcre FILENAME cl-ppcre))
DEPENDENCIES (alexandria cl-colors2 cl-ppcre) VERSION 20211020-git SIBLINGS
(cl-ansi-text.test) PARASITES NIL) */

View File

@ -1,27 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-ascii-table";
version = "20200610-git";
description = "Common Lisp library to present tabular data in ascii-art table.";
deps = [ ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-ascii-table/2020-06-10/cl-ascii-table-20200610-git.tgz";
sha256 = "00395cbmjwlywyks3zd4mqp0w7yyms61ywp06knv1gbf847vy7yi";
};
packageName = "cl-ascii-table";
asdFilesToKeep = ["cl-ascii-table.asd"];
overrides = x: x;
}
/* (SYSTEM cl-ascii-table DESCRIPTION
Common Lisp library to present tabular data in ascii-art table. SHA256
00395cbmjwlywyks3zd4mqp0w7yyms61ywp06knv1gbf847vy7yi URL
http://beta.quicklisp.org/archive/cl-ascii-table/2020-06-10/cl-ascii-table-20200610-git.tgz
MD5 6f2eaaae3fb03ba719d77ed3ffaeaf4f NAME cl-ascii-table FILENAME
cl-ascii-table DEPS NIL DEPENDENCIES NIL VERSION 20200610-git SIBLINGS NIL
PARASITES NIL) */

View File

@ -1,44 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-async-repl";
version = "cl-async-20211020-git";
description = "REPL integration for CL-ASYNC.";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cffi-grovel" args."cffi-toolchain" args."cl-async" args."cl-async-base" args."cl-async-util" args."cl-libuv" args."cl-ppcre" args."fast-io" args."static-vectors" args."trivial-features" args."trivial-gray-streams" args."vom" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-async/2021-10-20/cl-async-20211020-git.tgz";
sha256 = "1b3bwqvzw2pc83m4x8vbbxyriq58g0j3738mzq68v689zl071dl0";
};
packageName = "cl-async-repl";
asdFilesToKeep = ["cl-async-repl.asd"];
overrides = x: x;
}
/* (SYSTEM cl-async-repl DESCRIPTION REPL integration for CL-ASYNC. SHA256
1b3bwqvzw2pc83m4x8vbbxyriq58g0j3738mzq68v689zl071dl0 URL
http://beta.quicklisp.org/archive/cl-async/2021-10-20/cl-async-20211020-git.tgz
MD5 0e0cd11758e93a91b39ad726fb1051cc NAME cl-async-repl FILENAME
cl-async-repl DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi) (NAME cffi-grovel FILENAME cffi-grovel)
(NAME cffi-toolchain FILENAME cffi-toolchain)
(NAME cl-async FILENAME cl-async)
(NAME cl-async-base FILENAME cl-async-base)
(NAME cl-async-util FILENAME cl-async-util)
(NAME cl-libuv FILENAME cl-libuv) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME fast-io FILENAME fast-io)
(NAME static-vectors FILENAME static-vectors)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-gray-streams FILENAME trivial-gray-streams)
(NAME vom FILENAME vom))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cffi-grovel cffi-toolchain cl-async
cl-async-base cl-async-util cl-libuv cl-ppcre fast-io static-vectors
trivial-features trivial-gray-streams vom)
VERSION cl-async-20211020-git SIBLINGS
(cl-async-ssl cl-async-test cl-async) PARASITES NIL) */

View File

@ -1,45 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-async-ssl";
version = "cl-async-20211020-git";
description = "SSL Wrapper around cl-async socket implementation.";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cffi-grovel" args."cffi-toolchain" args."cl-async" args."cl-async-base" args."cl-async-util" args."cl-libuv" args."cl-ppcre" args."fast-io" args."static-vectors" args."trivial-features" args."trivial-gray-streams" args."vom" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-async/2021-10-20/cl-async-20211020-git.tgz";
sha256 = "1b3bwqvzw2pc83m4x8vbbxyriq58g0j3738mzq68v689zl071dl0";
};
packageName = "cl-async-ssl";
asdFilesToKeep = ["cl-async-ssl.asd"];
overrides = x: x;
}
/* (SYSTEM cl-async-ssl DESCRIPTION
SSL Wrapper around cl-async socket implementation. SHA256
1b3bwqvzw2pc83m4x8vbbxyriq58g0j3738mzq68v689zl071dl0 URL
http://beta.quicklisp.org/archive/cl-async/2021-10-20/cl-async-20211020-git.tgz
MD5 0e0cd11758e93a91b39ad726fb1051cc NAME cl-async-ssl FILENAME
cl-async-ssl DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi) (NAME cffi-grovel FILENAME cffi-grovel)
(NAME cffi-toolchain FILENAME cffi-toolchain)
(NAME cl-async FILENAME cl-async)
(NAME cl-async-base FILENAME cl-async-base)
(NAME cl-async-util FILENAME cl-async-util)
(NAME cl-libuv FILENAME cl-libuv) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME fast-io FILENAME fast-io)
(NAME static-vectors FILENAME static-vectors)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-gray-streams FILENAME trivial-gray-streams)
(NAME vom FILENAME vom))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cffi-grovel cffi-toolchain cl-async
cl-async-base cl-async-util cl-libuv cl-ppcre fast-io static-vectors
trivial-features trivial-gray-streams vom)
VERSION cl-async-20211020-git SIBLINGS
(cl-async-repl cl-async-test cl-async) PARASITES NIL) */

View File

@ -1,42 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-async";
version = "20211020-git";
parasites = [ "cl-async-base" "cl-async-util" ];
description = "Asynchronous operations for Common Lisp.";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cffi-grovel" args."cffi-toolchain" args."cl-libuv" args."cl-ppcre" args."fast-io" args."static-vectors" args."trivial-features" args."trivial-gray-streams" args."uiop" args."vom" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-async/2021-10-20/cl-async-20211020-git.tgz";
sha256 = "1b3bwqvzw2pc83m4x8vbbxyriq58g0j3738mzq68v689zl071dl0";
};
packageName = "cl-async";
asdFilesToKeep = ["cl-async.asd"];
overrides = x: x;
}
/* (SYSTEM cl-async DESCRIPTION Asynchronous operations for Common Lisp. SHA256
1b3bwqvzw2pc83m4x8vbbxyriq58g0j3738mzq68v689zl071dl0 URL
http://beta.quicklisp.org/archive/cl-async/2021-10-20/cl-async-20211020-git.tgz
MD5 0e0cd11758e93a91b39ad726fb1051cc NAME cl-async FILENAME cl-async DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi) (NAME cffi-grovel FILENAME cffi-grovel)
(NAME cffi-toolchain FILENAME cffi-toolchain)
(NAME cl-libuv FILENAME cl-libuv) (NAME cl-ppcre FILENAME cl-ppcre)
(NAME fast-io FILENAME fast-io)
(NAME static-vectors FILENAME static-vectors)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-gray-streams FILENAME trivial-gray-streams)
(NAME uiop FILENAME uiop) (NAME vom FILENAME vom))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cffi-grovel cffi-toolchain cl-libuv
cl-ppcre fast-io static-vectors trivial-features trivial-gray-streams uiop
vom)
VERSION 20211020-git SIBLINGS (cl-async-repl cl-async-ssl cl-async-test)
PARASITES (cl-async-base cl-async-util)) */

View File

@ -1,29 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-base64";
version = "20201016-git";
parasites = [ "cl-base64/test" ];
description = "Base64 encoding and decoding with URI support.";
deps = [ args."kmrcl" args."ptester" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-base64/2020-10-16/cl-base64-20201016-git.tgz";
sha256 = "1wd2sgvfrivrbzlhs1vgj762jqz7sk171ssli6gl1kfwbnphzx9z";
};
packageName = "cl-base64";
asdFilesToKeep = ["cl-base64.asd"];
overrides = x: x;
}
/* (SYSTEM cl-base64 DESCRIPTION Base64 encoding and decoding with URI support.
SHA256 1wd2sgvfrivrbzlhs1vgj762jqz7sk171ssli6gl1kfwbnphzx9z URL
http://beta.quicklisp.org/archive/cl-base64/2020-10-16/cl-base64-20201016-git.tgz
MD5 f556f7c61f785c84abdc1beb63c906ae NAME cl-base64 FILENAME cl-base64 DEPS
((NAME kmrcl FILENAME kmrcl) (NAME ptester FILENAME ptester)) DEPENDENCIES
(kmrcl ptester) VERSION 20201016-git SIBLINGS NIL PARASITES
(cl-base64/test)) */

View File

@ -1,40 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-cffi-gtk-cairo";
version = "cl-cffi-gtk-20201220-git";
description = "A Lisp binding to Cairo";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cl-cffi-gtk-glib" args."iterate" args."trivial-features" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz";
sha256 = "15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1";
};
packageName = "cl-cffi-gtk-cairo";
asdFilesToKeep = ["cl-cffi-gtk-cairo.asd"];
overrides = x: x;
}
/* (SYSTEM cl-cffi-gtk-cairo DESCRIPTION A Lisp binding to Cairo SHA256
15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1 URL
http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz
MD5 954beac0970a46263153c2863ad1cb5f NAME cl-cffi-gtk-cairo FILENAME
cl-cffi-gtk-cairo DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi)
(NAME cl-cffi-gtk-glib FILENAME cl-cffi-gtk-glib)
(NAME iterate FILENAME iterate)
(NAME trivial-features FILENAME trivial-features))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cl-cffi-gtk-glib iterate
trivial-features)
VERSION cl-cffi-gtk-20201220-git SIBLINGS
(cl-cffi-gtk-demo-cairo cl-cffi-gtk-demo-glib cl-cffi-gtk-demo-gobject
cl-cffi-gtk-example-gtk cl-cffi-gtk-opengl-demo cl-cffi-gtk-gdk-pixbuf
cl-cffi-gtk-gdk cl-cffi-gtk-gio cl-cffi-gtk-glib cl-cffi-gtk-gobject
cl-cffi-gtk cl-cffi-gtk-pango)
PARASITES NIL) */

View File

@ -1,42 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-cffi-gtk-gdk-pixbuf";
version = "cl-cffi-gtk-20201220-git";
description = "A Lisp binding to GDK Pixbuf 2";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cl-cffi-gtk-glib" args."cl-cffi-gtk-gobject" args."closer-mop" args."iterate" args."trivial-features" args."trivial-garbage" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz";
sha256 = "15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1";
};
packageName = "cl-cffi-gtk-gdk-pixbuf";
asdFilesToKeep = ["cl-cffi-gtk-gdk-pixbuf.asd"];
overrides = x: x;
}
/* (SYSTEM cl-cffi-gtk-gdk-pixbuf DESCRIPTION A Lisp binding to GDK Pixbuf 2
SHA256 15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1 URL
http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz
MD5 954beac0970a46263153c2863ad1cb5f NAME cl-cffi-gtk-gdk-pixbuf FILENAME
cl-cffi-gtk-gdk-pixbuf DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi)
(NAME cl-cffi-gtk-glib FILENAME cl-cffi-gtk-glib)
(NAME cl-cffi-gtk-gobject FILENAME cl-cffi-gtk-gobject)
(NAME closer-mop FILENAME closer-mop) (NAME iterate FILENAME iterate)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-garbage FILENAME trivial-garbage))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cl-cffi-gtk-glib
cl-cffi-gtk-gobject closer-mop iterate trivial-features trivial-garbage)
VERSION cl-cffi-gtk-20201220-git SIBLINGS
(cl-cffi-gtk-cairo cl-cffi-gtk-demo-cairo cl-cffi-gtk-demo-glib
cl-cffi-gtk-demo-gobject cl-cffi-gtk-example-gtk cl-cffi-gtk-opengl-demo
cl-cffi-gtk-gdk cl-cffi-gtk-gio cl-cffi-gtk-glib cl-cffi-gtk-gobject
cl-cffi-gtk cl-cffi-gtk-pango)
PARASITES NIL) */

View File

@ -1,48 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-cffi-gtk-gdk";
version = "cl-cffi-gtk-20201220-git";
description = "A Lisp binding to GDK 3";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cl-cffi-gtk-cairo" args."cl-cffi-gtk-gdk-pixbuf" args."cl-cffi-gtk-gio" args."cl-cffi-gtk-glib" args."cl-cffi-gtk-gobject" args."cl-cffi-gtk-pango" args."closer-mop" args."iterate" args."trivial-features" args."trivial-garbage" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz";
sha256 = "15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1";
};
packageName = "cl-cffi-gtk-gdk";
asdFilesToKeep = ["cl-cffi-gtk-gdk.asd"];
overrides = x: x;
}
/* (SYSTEM cl-cffi-gtk-gdk DESCRIPTION A Lisp binding to GDK 3 SHA256
15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1 URL
http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz
MD5 954beac0970a46263153c2863ad1cb5f NAME cl-cffi-gtk-gdk FILENAME
cl-cffi-gtk-gdk DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi)
(NAME cl-cffi-gtk-cairo FILENAME cl-cffi-gtk-cairo)
(NAME cl-cffi-gtk-gdk-pixbuf FILENAME cl-cffi-gtk-gdk-pixbuf)
(NAME cl-cffi-gtk-gio FILENAME cl-cffi-gtk-gio)
(NAME cl-cffi-gtk-glib FILENAME cl-cffi-gtk-glib)
(NAME cl-cffi-gtk-gobject FILENAME cl-cffi-gtk-gobject)
(NAME cl-cffi-gtk-pango FILENAME cl-cffi-gtk-pango)
(NAME closer-mop FILENAME closer-mop) (NAME iterate FILENAME iterate)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-garbage FILENAME trivial-garbage))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cl-cffi-gtk-cairo
cl-cffi-gtk-gdk-pixbuf cl-cffi-gtk-gio cl-cffi-gtk-glib
cl-cffi-gtk-gobject cl-cffi-gtk-pango closer-mop iterate trivial-features
trivial-garbage)
VERSION cl-cffi-gtk-20201220-git SIBLINGS
(cl-cffi-gtk-cairo cl-cffi-gtk-demo-cairo cl-cffi-gtk-demo-glib
cl-cffi-gtk-demo-gobject cl-cffi-gtk-example-gtk cl-cffi-gtk-opengl-demo
cl-cffi-gtk-gdk-pixbuf cl-cffi-gtk-gio cl-cffi-gtk-glib
cl-cffi-gtk-gobject cl-cffi-gtk cl-cffi-gtk-pango)
PARASITES NIL) */

View File

@ -1,42 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-cffi-gtk-gio";
version = "cl-cffi-gtk-20201220-git";
description = "A Lisp binding to GIO 2";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cl-cffi-gtk-glib" args."cl-cffi-gtk-gobject" args."closer-mop" args."iterate" args."trivial-features" args."trivial-garbage" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz";
sha256 = "15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1";
};
packageName = "cl-cffi-gtk-gio";
asdFilesToKeep = ["cl-cffi-gtk-gio.asd"];
overrides = x: x;
}
/* (SYSTEM cl-cffi-gtk-gio DESCRIPTION A Lisp binding to GIO 2 SHA256
15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1 URL
http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz
MD5 954beac0970a46263153c2863ad1cb5f NAME cl-cffi-gtk-gio FILENAME
cl-cffi-gtk-gio DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi)
(NAME cl-cffi-gtk-glib FILENAME cl-cffi-gtk-glib)
(NAME cl-cffi-gtk-gobject FILENAME cl-cffi-gtk-gobject)
(NAME closer-mop FILENAME closer-mop) (NAME iterate FILENAME iterate)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-garbage FILENAME trivial-garbage))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cl-cffi-gtk-glib
cl-cffi-gtk-gobject closer-mop iterate trivial-features trivial-garbage)
VERSION cl-cffi-gtk-20201220-git SIBLINGS
(cl-cffi-gtk-cairo cl-cffi-gtk-demo-cairo cl-cffi-gtk-demo-glib
cl-cffi-gtk-demo-gobject cl-cffi-gtk-example-gtk cl-cffi-gtk-opengl-demo
cl-cffi-gtk-gdk-pixbuf cl-cffi-gtk-gdk cl-cffi-gtk-glib
cl-cffi-gtk-gobject cl-cffi-gtk cl-cffi-gtk-pango)
PARASITES NIL) */

View File

@ -1,37 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-cffi-gtk-glib";
version = "cl-cffi-gtk-20201220-git";
description = "A Lisp binding to GLib 2";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."iterate" args."trivial-features" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz";
sha256 = "15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1";
};
packageName = "cl-cffi-gtk-glib";
asdFilesToKeep = ["cl-cffi-gtk-glib.asd"];
overrides = x: x;
}
/* (SYSTEM cl-cffi-gtk-glib DESCRIPTION A Lisp binding to GLib 2 SHA256
15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1 URL
http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz
MD5 954beac0970a46263153c2863ad1cb5f NAME cl-cffi-gtk-glib FILENAME
cl-cffi-gtk-glib DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi) (NAME iterate FILENAME iterate)
(NAME trivial-features FILENAME trivial-features))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi iterate trivial-features) VERSION
cl-cffi-gtk-20201220-git SIBLINGS
(cl-cffi-gtk-cairo cl-cffi-gtk-demo-cairo cl-cffi-gtk-demo-glib
cl-cffi-gtk-demo-gobject cl-cffi-gtk-example-gtk cl-cffi-gtk-opengl-demo
cl-cffi-gtk-gdk-pixbuf cl-cffi-gtk-gdk cl-cffi-gtk-gio cl-cffi-gtk-gobject
cl-cffi-gtk cl-cffi-gtk-pango)
PARASITES NIL) */

View File

@ -1,41 +0,0 @@
/* Generated file. */
args @ { fetchurl, ... }:
rec {
baseName = "cl-cffi-gtk-gobject";
version = "cl-cffi-gtk-20201220-git";
description = "A Lisp binding GObject 2";
deps = [ args."alexandria" args."babel" args."bordeaux-threads" args."cffi" args."cl-cffi-gtk-glib" args."closer-mop" args."iterate" args."trivial-features" args."trivial-garbage" ];
src = fetchurl {
url = "http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz";
sha256 = "15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1";
};
packageName = "cl-cffi-gtk-gobject";
asdFilesToKeep = ["cl-cffi-gtk-gobject.asd"];
overrides = x: x;
}
/* (SYSTEM cl-cffi-gtk-gobject DESCRIPTION A Lisp binding GObject 2 SHA256
15vc0d7nirh0m6rkvzby2zb7qcpyvsxzs5yw5h6h3madyl8qm9b1 URL
http://beta.quicklisp.org/archive/cl-cffi-gtk/2020-12-20/cl-cffi-gtk-20201220-git.tgz
MD5 954beac0970a46263153c2863ad1cb5f NAME cl-cffi-gtk-gobject FILENAME
cl-cffi-gtk-gobject DEPS
((NAME alexandria FILENAME alexandria) (NAME babel FILENAME babel)
(NAME bordeaux-threads FILENAME bordeaux-threads)
(NAME cffi FILENAME cffi)
(NAME cl-cffi-gtk-glib FILENAME cl-cffi-gtk-glib)
(NAME closer-mop FILENAME closer-mop) (NAME iterate FILENAME iterate)
(NAME trivial-features FILENAME trivial-features)
(NAME trivial-garbage FILENAME trivial-garbage))
DEPENDENCIES
(alexandria babel bordeaux-threads cffi cl-cffi-gtk-glib closer-mop iterate
trivial-features trivial-garbage)
VERSION cl-cffi-gtk-20201220-git SIBLINGS
(cl-cffi-gtk-cairo cl-cffi-gtk-demo-cairo cl-cffi-gtk-demo-glib
cl-cffi-gtk-demo-gobject cl-cffi-gtk-example-gtk cl-cffi-gtk-opengl-demo
cl-cffi-gtk-gdk-pixbuf cl-cffi-gtk-gdk cl-cffi-gtk-gio cl-cffi-gtk-glib
cl-cffi-gtk cl-cffi-gtk-pango)
PARASITES NIL) */

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