57 lines
2.1 KiB
Plaintext
57 lines
2.1 KiB
Plaintext
;; -*- mode: common-lisp; -*-
|
|
|
|
;;; The following lines added by ql:add-to-init-file:
|
|
;; #-quicklisp
|
|
;; (let ((quicklisp-init (merge-pathnames ".quicklisp/setup.lisp"
|
|
;; (user-homedir-pathname))))
|
|
;; (when (probe-file quicklisp-init)
|
|
;; (load quicklisp-init)))
|
|
|
|
;; Some OSes package Lisp compilers in a way that ASDF is not automatically loaded.
|
|
(require "asdf")
|
|
|
|
(uiop:define-package #:guix
|
|
(:use :common-lisp))
|
|
(in-package #:guix)
|
|
|
|
(export '*guix-profiles-dir*)
|
|
(defvar *guix-profiles-dir* "~/.guix-extra-profiles/"
|
|
"Directory in which Guix profiles are stored.
|
|
The actual profiles are in the subsubdirectories.")
|
|
|
|
(export '*cffi-dirs*)
|
|
(defvar *cffi-dirs* '("~/.guix-profile/lib" "~/common-lisp/cl-webengine/source")
|
|
"Shared library directories to be used for CFFI.")
|
|
|
|
(defun find-guix-library-dirs (profiles-dir)
|
|
(mapcar (lambda (d)
|
|
(format nil "~a~a/lib/"
|
|
(namestring d)
|
|
(first (last (pathname-directory d)))))
|
|
(uiop:subdirectories profiles-dir)))
|
|
|
|
(export 'set-cffi-library-dirs)
|
|
(defun set-cffi-library-dirs (&optional (dirs (append
|
|
*cffi-dirs*
|
|
(find-guix-library-dirs *guix-profiles-dir*))))
|
|
"Call this to set `cffi:*foreign-library-directories*' to DIRS."
|
|
(when (ignore-errors (asdf:load-system "cffi"))
|
|
(let ((sym (read-from-string "cffi:*foreign-library-directories*")))
|
|
(setf (symbol-value sym)
|
|
(union (symbol-value sym)
|
|
;; CFFI needs a trailing "/".
|
|
(delete nil (mapcar #'uiop:ensure-directory-pathname dirs))
|
|
:test #'uiop:pathname-equal)))))
|
|
|
|
;; Set it by default.
|
|
(set-cffi-library-dirs)
|
|
|
|
(in-package :cl-user)
|
|
|
|
;; Uncomment the following to increase the debug details.
|
|
;; It's often better to do this from the REPL.
|
|
;; (declaim (optimize (speed 0) (space 0) (debug 3)))
|
|
|
|
;; Uncomment to enable full type checks (should be the default).
|
|
;; (declaim (optimize (or (>= safety 2) (>= safety speed 1))))
|