Infrastructure for Common Lisp Ports: Overhaul

- Decouple ASDF initialization from devel/cl-asdf by creating a
  dedicated port: devel/freebsd-cl-asdf-init.
- Convert devel/cl-asdf/bsd.cl-asdf.mk to USES=cl.
- Add devel/cl-asdf-sbcl
- Update ASDF configuration:
   - Prefer newer ASDF versions, but only if the fasl is available.
   - Replace license text with an SPDX license identifier.
   - Simplify and clarify documentation.
   - Remove the assumption that ${PREFIX} is /usr/local.
   - Use uiop:getenv instead of a custom getenv function.
   - Remove asdf:output-files customization to resolve output
     translation issues.
   - Improve output translations:
     - Prevent writing fasls to ${PREFIX}/lib/common-lisp/ when the
       corresponding fasl port is not installed.
     - Fall back to ASDF's default caching mechanism of writing fasl to
       a cache under ${HOME} when users install a Common Lisp port
       without its fasl port.
   - Improve interoperability with Common Lisp code from sources outside
     of ports, such as Quicklisp.
   - Add support for Clozure Common Lisp (CCL)

Approved by:	olgeni (implicit)
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D47983
This commit is contained in:
Joseph Mingrone 2024-12-07 00:35:45 -04:00
parent 0c35c3d61d
commit 4c954c1522
No known key found for this signature in database
GPG key ID: 36A40C83B0D6EF9E
45 changed files with 466 additions and 532 deletions

142
Mk/Uses/cl.mk Normal file
View file

@ -0,0 +1,142 @@
# Provide support for Common Lisp ports.
#
# Feature: cl
# Usage: USES=cl
# Valid ARGS: none
#
# Variables, which may be set by ports:
# ASDF_MODULES - List of ASDF modules to build when FASL_TARGET is set (defaults to PORTNAME)
# FASL_TARGET - Build fasl variant of port (one of ccl, clisp, or sbcl)
# USE_ASDF - Depend on devel/cl-asdf
# USE_ASDF_FASL - Depend on devel/cl-asdf-<FASL_TARGET>
# USE_CCL - Depend on lang/ccl; implied when FASL_TARGET=ccl
# USE_CLISP - Depend on lang/clisp; implied when FASL_TARGET=clisp
# USE_SBCL - Depend on lang/sbcl; implied when FASL_TARGET=SBCL
#
# Variables to be read by ports:
# ASDF_PATHNAME - Path to CL source
# ASDF_REGISTRY - Path to CL registry containing asd files
# CCL - Path to the Clozure Common Lisp compiler
# CLISP - Path to the GNU Common Lisp compiler
# CL_LIBDIR_REL - CL library directory relative to LOCALBASE or PREFIX
# DOCSDIR - DOCSDIR accounting for cl- PKGNAMEPREFIX
# EXAMPLESDIR - EXAMPLESDIR accounting for cl- PKGNAMEPREFIX
# FASL_DIR_REL - Relative path to compiled fasl files; depends on FASL_TARGET
# FASL_PATHNAME - Path to CL fasl
# LISP_EXTRA_ARG - Extra arguments used when building fasl
# SBCL - Path to the Steel Bank Common Lisp compiler
.if !defined(_INCLUDE_USES_CL_MK)
_INCLUDE_USES_CL_MK= yes
CL_ASDF_Include_MAINTAINER= olgeni@FreeBSD.org
CCL?= ${LOCALBASE}/bin/ccl
CLISP?= ${LOCALBASE}/bin/clisp
SBCL?= ${LOCALBASE}/bin/sbcl
CL_LIBDIR_REL= lib/common-lisp
ASDF_PATHNAME= ${PREFIX}/${CL_LIBDIR_REL}/${PORTNAME}
ASDF_REGISTRY= ${PREFIX}/${CL_LIBDIR_REL}/system-registry
# Include PKGNAMEPREFIX in DOCSDIR and EXAMPLESDIR
DOCSDIR= ${PREFIX}/share/doc/${PKGBASE}
EXAMPLESDIR= ${PREFIX}/share/examples/${PKGBASE}
. if ${PORTNAME} != "ccl"
NO_ARCH= yes
. endif
. if defined(FASL_TARGET)
FASL_DIR_REL= ${FASL_TARGET}fasl
FASL_PATHNAME= ${PREFIX}/${CL_LIBDIR_REL}/${PORTNAME}/${FASL_DIR_REL}
PKGNAMESUFFIX= -${FASL_TARGET}
. if ${FASL_TARGET} == "ccl"
USE_CCL= yes
. elif ${FASL_TARGET} == "clisp"
USE_CLISP= yes
. elif ${FASL_TARGET} == "sbcl"
USE_SBCL= yes
. endif
. endif # defined(FASL_TARGET)
. if defined(USE_CCL)
BUILD_DEPENDS+= ccl:lang/ccl
RUN_DEPENDS+= ccl:lang/ccl
. elif defined(USE_CLISP)
BUILD_DEPENDS+= clisp:lang/clisp
RUN_DEPENDS+= clisp:lang/clisp
. elif defined(USE_SBCL)
BUILD_DEPENDS+= sbcl:lang/sbcl
RUN_DEPENDS+= sbcl:lang/sbcl
. endif
. if defined(USE_ASDF)
# Depend on the ASDF port, even if the Common Lisp compiler already has a bundled
# ASDF framework.
BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
. endif # defined(USE_ASDF)
. if defined(USE_ASDF_FASL)
. if defined(USE_CCL)
BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fx64fsl:devel/cl-asdf-ccl
RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fx64fsl:devel/cl-asdf-ccl
. elif defined(USE_CLISP)
BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fas:devel/cl-asdf-clisp
RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fas:devel/cl-asdf-clisp
. elif defined(USE_SBCL)
BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fasl:devel/cl-asdf-sbcl
RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/build/asdf.fasl:devel/cl-asdf-sbcl
. endif
. endif # defined(USE_ASDF_FASL)
. if defined(FASL_TARGET)
ASDF_MODULES?= ${PORTNAME}
. if !target(do-build)
# See devel/cl-freebsd-asdf-init/files/cl-freebsd-asdf-init.lisp for the meaning
# of FBSD_ASDF_COMPILE_PORT.
do-build:
. for MODULE in ${ASDF_MODULES}
. if defined(USE_CCL)
@FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
${CCL} ${LISP_EXTRA_ARG} -b -n \
-l ${LOCALBASE}/etc/cl-freebsd-asdf-init \
-e "(asdf:oos 'asdf:compile-op :${MODULE})"
. endif # USE_CCL
. if defined(USE_CLISP)
@FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
${CLISP} ${LISP_EXTRA_ARG} -ansi -norc \
-i ${LOCALBASE}/etc/cl-freebsd-asdf-init \
-x "(asdf:oos 'asdf:compile-op :${MODULE})"
. endif # USE_CLISP
. if defined(USE_SBCL)
@FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
${SBCL} ${LISP_EXTRA_ARG} --noinform --userinit /dev/null --disable-debugger \
--eval '#.(load "${LOCALBASE}/etc/cl-freebsd-asdf-init")' \
--eval "(asdf:oos 'asdf:compile-op :${MODULE})" \
--eval "(quit)"
. endif # USE_SBCL
. endfor
. endif # !target(do-build)
. if !target(do-install)
do-install:
@${MKDIR} ${STAGEDIR}${FASL_PATHNAME}
@cd ${WRKSRC} && ${COPYTREE_SHARE} . ${STAGEDIR}${FASL_PATHNAME}
. endif # !target(do-install)
post-install:
@cd ${WRKSRC} && ${FIND} * -type f \
| ${SORT} \
| ${AWK} '{ print "${CL_LIBDIR_REL}/${PORTNAME}/${FASL_DIR_REL}/" $$1 }' \
>> ${TMPPLIST}
. endif # FASL_TARGET
.endif # _INCLUDE_USES_ASDF_MK

View file

@ -1,6 +1,6 @@
PORTNAME= babel
PORTVERSION= 2010.01.16
PORTREVISION= 90
PORTREVISION= 91
CATEGORIES= converters lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -18,10 +18,8 @@ RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/babel/babel.asd:converters/cl-babel \
${LOCALBASE}/${CL_LIBDIR_REL}/trivial-features/sbclfasl/src/tf-sbcl.fasl:devel/cl-trivial-features-sbcl \
${LOCALBASE}/${CL_LIBDIR_REL}/trivial-gray-streams/sbclfasl/package.fasl:devel/cl-trivial-gray-streams-sbcl
USE_ASDF_FASL= yes
FASL_TARGET= sbcl
FASL_BUILD= yes
USES= cl
ASDF_MODULES= babel babel-streams
FASL_TARGET= sbcl
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= babel
PORTVERSION= 2010.01.16
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= converters lisp
PKGNAMEPREFIX= cl-
MASTER_SITES= LOCAL/olgeni
@ -18,7 +18,7 @@ RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/alexandria/alexandria.asd:devel/cl-al
NO_BUILD= yes
USE_ASDF= yes
USES= cl
OPTIONS_DEFINE= DOCS EXAMPLES
@ -36,5 +36,4 @@ do-install:
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
@${INSTALL_DATA} ${WRKSRC}/tests/* ${STAGEDIR}${EXAMPLESDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -414,7 +414,9 @@
SUBDIR += cl-alexandria
SUBDIR += cl-alexandria-sbcl
SUBDIR += cl-asdf
SUBDIR += cl-asdf-sbcl
SUBDIR += cl-cffi
SUBDIR += cl-freebsd-asdf-init
SUBDIR += cl-infix
SUBDIR += cl-infix-sbcl
SUBDIR += cl-port

View file

@ -1,23 +1,21 @@
PORTNAME= alexandria
PORTVERSION= 1.4
PORTREVISION= 1
PORTREVISION= 2
PORTEPOCH= 1
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
LICENSE= PD
MAINTAINER= olgeni@FreeBSD.org
COMMENT= Collection of portable public domain utilities for Common Lisp
WWW= https://common-lisp.net/project/alexandria/
LICENSE= PD
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/alexandria/alexandria.asd:devel/cl-alexandria
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/alexandria/alexandria.asd:devel/cl-alexandria
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,7 @@
PORTNAME= alexandria
DISTVERSIONPREFIX= v
DISTVERSION= 1.4
PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
@ -12,7 +13,7 @@ WWW= https://common-lisp.net/project/alexandria/
LICENSE= PD
LICENSE_FILE= ${WRKSRC}/LICENCE
USE_ASDF= yes
USES= cl
USE_GITLAB= yes
GL_SITE= https://gitlab.common-lisp.net
@ -46,5 +47,4 @@ do-install-DOCS-on:
${INSTALL_DATA} ${WRKSRC}/doc/${PORTNAME}.html ${WRKSRC}/doc/${PORTNAME}.pdf \
${STAGEDIR}${DOCSDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -0,0 +1,19 @@
PORTNAME= asdf
PORTVERSION= 3.3.7
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
MAINTAINER= jrm@FreeBSD.org
COMMENT= System definition facility for Common Lisp
WWW= https://common-lisp.net/project/asdf/
LICENSE= MIT
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
USES= cl
FASL_TARGET= sbcl
.include <bsd.port.mk>

View file

@ -0,0 +1,7 @@
asdf is Another System Definition Facility for Common Lisp. It intends
to solve the same class of problems as mk-defsystem - compiling and
installing Lisp libraries -, but internally it takes advantage of
modern CL features like pathname support etc., and uses CLOS for
extensibility.
This package is compiled with SBCL.

View file

@ -11,10 +11,7 @@ WWW= https://common-lisp.net/project/asdf/
LICENSE= MIT
USES= gmake
ALL_TARGET= build/asdf.lisp
SUB_FILES= pkg-message
USES= cl gmake
OPTIONS_DEFINE= DOCS
@ -37,16 +34,10 @@ do-install:
${RLN} ${STAGEDIR}${ASDF_PATHNAME}/build/asdf.lisp ${STAGEDIR}${ASDF_PATHNAME}
${RLN} ${STAGEDIR}${ASDF_PATHNAME}/asdf.asd ${STAGEDIR}${ASDF_REGISTRY}
${RLN} ${STAGEDIR}${ASDF_PATHNAME}/uiop/uiop.asd ${STAGEDIR}${ASDF_REGISTRY}
${SED} -e 's|%%ASDF_PATHNAME%%|${ASDF_PATHNAME}/asdf|' \
-e 's|%%ASDF_REGISTRY%%|${ASDF_REGISTRY}|' \
-e 's|%%PREFIX%%|${PREFIX}|' \
${FILESDIR}/asdf-init.lisp > \
${STAGEDIR}${PREFIX}/etc/asdf-init.lisp.default
do-install-DOCS-on:
@${MKDIR} ${STAGEDIR}${DOCSDIR}
(cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR})
(cd ${STAGEDIR}${DOCSDIR} && ${RM} .htaccess Changelog Makefile)
.include <bsd.cl-asdf.mk>
.include <bsd.port.mk>

View file

@ -1,122 +0,0 @@
# bsd.cl-asdf.mk - Common Lisp related macros
#
# SBCL - Path to the Steel Bank Common Lisp compiler
# CLISP - Path to the GNU Common Lisp compiler
# LISP_EXTRA_ARG - Extra arguments for compiler used by FASL_BUILD ports
# CL_LIBDIR_REL - Common Lisp library directory, relative to LOCALBASE or PREFIX
# ASDF_PATHNAME - Where to install compiled FASL files (depends on FASL_DIR_REL)
# ASDF_REGISTRY - Path to ASDF registry
# DOCSDIR - DOCSDIR using PKGBASE (to account for optional cl- PKGNAMEPREFIX)
# EXAMPLESDIR - Same as above, for EXAMPLESDIR
# FASL_DIR_REL - Relative path to compiled FASL files; depends on FASL_TARGET
# FASL_TARGET - Platform for building FASL files (currently "sbcl" or "clisp")
# USE_SBCL - If set, depend on lang/sbcl
# USE_CLISP - If set, depend on lang/clisp
# USE_ASDF - If set, depend on devel/cl-asdf
# USE_ASDF_FASL - If set, set dependency on compiled ASDF files (only if
# required by the chosen FASL_TARGET)
# FASL_BUILD - If set, compile FASL files using the ASDF framework
# ASDF_MODULES - If FASL_BUILD is set: list of ASDF modules to compile
CL_ASDF_Include_MAINTAINER= olgeni@FreeBSD.org
SBCL?= ${LOCALBASE}/bin/sbcl
CLISP?= ${LOCALBASE}/bin/clisp
CL_LIBDIR_REL= lib/common-lisp
ASDF_PATHNAME= ${PREFIX}/${CL_LIBDIR_REL}/${PORTNAME}
FASL_PATHNAME= ${PREFIX}/${CL_LIBDIR_REL}/${PORTNAME}/${FASL_DIR_REL}
ASDF_REGISTRY= ${PREFIX}/${CL_LIBDIR_REL}/system-registry
# Include PKGNAMEPREFIX in DOCSDIR and EXAMPLESDIR
DOCSDIR= ${PREFIX}/share/doc/${PKGBASE}
EXAMPLESDIR= ${PREFIX}/share/examples/${PKGBASE}
.if ${PORTNAME} != "ccl"
NO_ARCH= yes
.endif
.if defined(FASL_TARGET)
FASL_DIR_REL= ${FASL_TARGET}fasl
PKGNAMESUFFIX= -${FASL_TARGET}
.if ${FASL_TARGET} == "sbcl"
USE_SBCL= yes
.elif ${FASL_TARGET} == "clisp"
USE_CLISP= yes
.endif
.endif # defined(FASL_TARGET)
.if defined(USE_SBCL)
BUILD_DEPENDS+= sbcl:lang/sbcl
RUN_DEPENDS+= sbcl:lang/sbcl
.elif defined(USE_CLISP)
BUILD_DEPENDS+= clisp:lang/clisp
RUN_DEPENDS+= clisp:lang/clisp
.endif # defined(USE_CLISP)
.if defined(USE_ASDF)
# Even if the Common Lisp compiler already has a bundled ASDF framework,
# we still need the asdf-init file.
BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/asdf.asd:devel/cl-asdf
.endif # defined(USE_ASDF)
.if defined(USE_ASDF_FASL)
.if defined(USE_SBCL)
# SBCL already has a bundled ASDF framework
.elif defined(USE_CLISP)
BUILD_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/asdf.fasl:devel/cl-asdf-clisp
RUN_DEPENDS+= ${LOCALBASE}/${CL_LIBDIR_REL}/asdf/${FASL_DIR_REL}/asdf.fasl:devel/cl-asdf-clisp
.endif # defined(USE_CLISP)
.endif # defined(USE_ASDF_FASL)
.if defined(FASL_BUILD)
ASDF_MODULES?= ${PORTNAME}
.if !target(do-build)
# See devel/cl-asdf/files/asdf-init.lisp for the meaning of FBSD_ASDF_COMPILE_PORT.
do-build:
.for MODULE in ${ASDF_MODULES}
.if defined(USE_SBCL)
@FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
${SBCL} ${LISP_EXTRA_ARG} --noinform --userinit /dev/null --disable-debugger \
--eval '#.(load "${LOCALBASE}/etc/asdf-init")' \
--eval "(asdf:oos 'asdf:compile-op :${MODULE})" \
--eval "(quit)"
.endif # USE_SBCL
.if defined(USE_CLISP)
@FBSD_ASDF_COMPILE_PORT=t PORTNAME=${PORTNAME} WRKSRC=${WRKSRC}/ \
${CLISP} ${LISP_EXTRA_ARG} -ansi -norc \
-i ${LOCALBASE}/etc/asdf-init \
-x "(asdf:oos 'asdf:compile-op :${MODULE})"
@${FIND} ${WRKSRC} -name "*.lib" | ${XARGS} ${RM}
.endif # USE_CLISP
.endfor
.endif # !target(do-build)
.if !target(do-install)
do-install:
@${MKDIR} ${STAGEDIR}${FASL_PATHNAME}
@cd ${WRKSRC} && ${COPYTREE_SHARE} . ${STAGEDIR}${FASL_PATHNAME}
.endif # !target(do-install)
post-install:
@cd ${WRKSRC} && ${FIND} * -type f \
| ${SORT} \
| ${AWK} '{ print "${CL_LIBDIR_REL}/${PORTNAME}/${FASL_DIR_REL}/" $$1 }' \
>> ${TMPPLIST}
.endif # FASL_BUILD

View file

@ -1,254 +0,0 @@
;;;; asdf-config.lisp - Setup ASDF to deal with FBSD ports conventions
;; Copyright (c) 2003 Henrik Motakef <henrik.motakef@web.de>
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;; 1. Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; 2. Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution
;; THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
;; WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
;; IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
;; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
;; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
;; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
;; STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
;; IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
;; POSSIBILITY OF SUCH DAMAGE.
;;;; How to use
;; A number of FreeBSD ports related to Common Lisp use the asdf
;; system definition library, available as devel/cl-asdf-* (which you
;; obviously already have installed, since this file is included with
;; that port). That implies that you will have to load and configure
;; asdf to use these ports with your Lisp system.
;;
;; This file takes all necessary actions. The easiest way is to load
;; it in your Lisp every time it starts, by putting
;;
;; (load "/usr/local/etc/asdf-init.lisp")
;;
;; in your init file.
;;
;; Each Lisp implementation has its own files where this can be done:
;;
;; CLISP:
;; /usr/local/lib/clisp/config.lisp
;; ~/.clisprc
;;
;; CMUCL:
;; /usr/local/lib/cmucl/lib/cmucl/lib/site-init.lisp
;; ~/.cmucl-init.lisp
;;
;; SBCL:
;; /usr/local/etc/sbclrc
;; ~/.sbclrc
;;
;; CLOZURE CL / OPENMCL:
;; ~/.ccl-init.lisp
;;
;; After that, you can load your installed ports like this (using
;; textproc/cl-ppcre as an example):
;;
;; (asdf:operate 'asdf:load-op 'cl-ppcre)
;;
;; Have fun!
;;;; What's going on here
;; We mess around with asdf:output-files in interesting ways to
;; enforce a filesystem layout that works without multiple Lisp
;; implementations overwriting their fasls. Basically, each lib has
;; its own directory in /usr/local/lib/common-lisp, initially
;; containing its sources. Each fasl port will create an
;; implementation-specific subdirectory where all its fasls go, for
;; example ./cmuclfasl, ./clispfasl etc.
;; Additionally, all fasl files have the pathname-type "fasl", not
;; "x86f" or "fas". The reason is that I want to be prepared for the
;; case that CMUCL some lucky day might be supported on non-x86
;; archs. Since it encodes the arch in the fasl file-type (x86f,
;; sparcf etc), hardcoding this in pkg-plists would then
;; break. Enforcing this policy for all implementations (for example,
;; CLISP uses .fas by default) simply is more convenient than handling
;; CMUCL specially.
;; The drawback is that users cannot easily load compiled code unless
;; they set up asdf properly, which boils down to loading this file
;; instead of asdf.lisp directly.
;; Yet another thing that has to be handled is compiling ports: During
;; 'make build', no files outside of ${WRKSRC} may be created. On the
;; other hand, it is a good idea to use the source files from their
;; final location, because CMUCL and SBCL record the source path and
;; can use, for example, to show the misbehaving form in the debugger.
;; And the fasl ports depend on the source port to be installed
;; anyway, because of the .asd file.
;; Hence, in the case of port compilation, we redirect the output to
;; ${WRKSRC}. This situation is detected by checking if an environment
;; variable FBSD_ASDF_COMPILE_PORT is set (and if we have a WRKSRC
;; envvar as well), so each port Makefile has to create this variable
;; in the environment in which it calls Lisp in do-build, see existing
;; ports for examples.
;; Note that it is only necessary to modify
;; (output-files ((op compile-op)) ...), because asdf:load-op will use
;; this method too to decide which files are to be loaded, there is no
;; separate method for load-op.
;;;; Adding support for other Lisp implementations
;; In order to make all this work for not-handled-yet Lisps, it is
;; only necessary to change LISP-SPECIFIC-FASL-SUDBIR and GETENV. Of
;; course, you'll also have to create new binary ports, if that's what
;; you want.
;;;; Package declaration
(defpackage :freebsd-asdf
(:use :common-lisp)
(:export #:*asdf-pathname*
#:unsupported-lisp-implementation))
(in-package :freebsd-asdf)
;;;; Paths
(defvar *asdf-pathname*
;; Clozure CL's internal asdf
#+openmcl "/usr/local/lib/ccl/tools/asdf"
;; SBCL's internal asdf
#+sbcl "/usr/local/lib/sbcl/asdf/asdf"
;; CMU and clisp
#-(or openmcl sbcl) "/usr/local/lib/common-lisp/asdf/asdf"
"Path of the ASDF library")
(defvar *system-registry*
"/usr/local/lib/common-lisp/system-registry/"
"FreeBSD's contribution to the central registry for ASDF system
definitions. This will be added to asdf:*central-registry*, you
should modify that in order to add other directories.")
;;;; Implementation-specific functions
(define-condition unsupported-lisp-implementation ()
()
(:report (lambda (condition stream)
(declare (ignore condition)
(type stream stream))
(format stream "Your Lisp system, ~A ~A, is currently not ~
supported by the FreeBSD ports system."
(lisp-implementation-type)
(lisp-implementation-version)))))
(defun lisp-specific-fasl-subdir ()
"Return the subdirectory in which fasl files for this Lisp
implementations should be stored, as a string without any slashes.
If no subdirectory for the current implementation is known, signal an
error of type UNSUPPORTED-LISP-IMPLEMENTATION.
This function has to be extended for each new Lisp implementation that
should be able to use the ASDF-based Lisp ports. If you do this, you
should probably extend GETENV as well."
#+clisp "clispfasl"
#+cmu "cmuclfasl"
#+sbcl "sbclfasl"
#+openmcl "cclfasl"
#-(or clisp cmu sbcl openmcl) (error 'unsupported-lisp-implementation))
(defun getenv (varname)
"Return the value of environment variable VARNAME, as a string.
If VARNAME is not found in the current environment, return nil.
May signal an error of type UNSUPPORTED-LISP-IMPLEMENTATION, see
below.
This is used to communicate make variables like WRKSRC from the ports
system to Lisp. Note that this doesn't happen automatically for
variables defined in a Makefile, you'll have to pass these to the
environment in which Lisp runs explicitly.
Since accessing environment variables is not portable, this function
has to be extended for each Lisp implementation that is to work with
FreeBSDs Lisp ports. If you do this, you should probably extend
LISP-SPECIFIC-FASL-SUBDIR as well."
#+sbcl (sb-ext:posix-getenv varname)
#+cmu (cdr (assoc varname ext:*environment-list*
:test #'equalp
:key #'string))
#+clisp (sys::getenv varname)
#+openmcl (ccl::getenv varname)
#-(or sbcl cmu clisp openmcl) (error 'unsupported-lisp-implementation))
;;;; Load and configure ASDF
(defvar *asdf-binary-pathname*
(make-pathname
:directory `(:absolute ,@(cdr (pathname-directory *asdf-pathname*))
,(lisp-specific-fasl-subdir))
:type "fasl"
:defaults *asdf-pathname*))
(or (ignore-errors (load *asdf-binary-pathname* :verbose t :print nil))
(load *asdf-pathname* :verbose t :print nil))
#+openmcl (push "ccl:tools;asdf-install;" asdf:*central-registry*)
(pushnew *system-registry* asdf:*central-registry*)
(defmethod asdf:output-files :around ((op asdf:compile-op)
(file asdf:cl-source-file))
(let ((default-output-file (car (call-next-method))))
(list
(make-pathname
:directory (pathname-directory (namestring default-output-file))
:type "fasl"
:defaults default-output-file))))
;; Map each library in common-lisp/ to its fasl subdirectory
(defvar *freebsd-output-translations* ())
(pushnew :inherit-configuration *freebsd-output-translations*)
(dolist (path (directory "/usr/local/lib/common-lisp/*/"))
(let ((source (make-pathname
:directory (append (pathname-directory path)
(list :wild-inferiors))))
(target (make-pathname
:directory (append (pathname-directory path)
(list (lisp-specific-fasl-subdir) :wild-inferiors)))))
(pushnew (list source target) *freebsd-output-translations*)))
(if (and (getenv "FBSD_ASDF_COMPILE_PORT")
(getenv "PORTNAME")
(getenv "WRKSRC"))
(let ((wrksrc (getenv "WRKSRC"))
(portname (getenv "PORTNAME")))
;; If we are building a FreeBSD port, all the compiled fasl files
;; should be redirected to WRKSRC.
(let ((source (make-pathname
:directory (append (pathname-directory #P"/usr/local/lib/common-lisp/")
(list portname :wild-inferiors))))
(target (make-pathname
:directory (append (pathname-directory wrksrc)
(list :wild-inferiors)))))
(pushnew (list source target) *freebsd-output-translations*))))
(asdf:initialize-output-translations (cons :output-translations *freebsd-output-translations*))
;;;; asdf-init.lisp ends here

View file

@ -1,11 +0,0 @@
--- Makefile.orig 2018-03-07 21:53:28 UTC
+++ Makefile
@@ -101,7 +101,7 @@ noext:
load: build/asdf.lisp
./test/run-tests.sh -t $l $(all_lisp)
-install: archive
+install:
bump: bump-version
git commit -a -m "Bump version to $$(eval a=$$(cat version.lisp-expr) ; echo $$a)"

View file

@ -1,16 +0,0 @@
[
{ type: install
message: <<EOM
To use asdf and depending ports, you will have to configure your
Lisp systems so they know where to find asdf itself and the system
definition files.
A default configuration is installed in
%%PREFIX%%/etc/asdf-init.lisp
Review this file for further information, or simply load it from your
Lisp initialization file.
EOM
}
]

View file

@ -1,4 +1,3 @@
@sample etc/asdf-init.lisp.default etc/asdf-init.lisp
lib/common-lisp/asdf/action.lisp
lib/common-lisp/asdf/asdf.lisp
lib/common-lisp/asdf/build/asdf.lisp

View file

@ -29,6 +29,7 @@ RUN_DEPENDS:= ${BUILD_DEPENDS}
NO_BUILD= yes
USES= cl
USE_ASDF= yes
OPTIONS_DEFINE= DOCS EXAMPLES
@ -46,8 +47,10 @@ do-install:
${INSTALL_DATA} ${WRKSRC}/cffi.asd ${STAGEDIR}${ASDF_PATHNAME}
${INSTALL_DATA} ${WRKSRC}/cffi-uffi-compat.asd ${STAGEDIR}${ASDF_PATHNAME}
${INSTALL_DATA} ${WRKSRC}/cffi-grovel.asd ${STAGEDIR}${ASDF_PATHNAME}
${LN} -sf ${ASDF_PATHNAME}/cffi.asd ${ASDF_PATHNAME}/cffi-uffi-compat.asd \
${ASDF_PATHNAME}/cffi-grovel.asd ${STAGEDIR}${ASDF_REGISTRY}
${RLN} ${STAGEDIR}${ASDF_PATHNAME}/cffi.asd \
${STAGEDIR}${ASDF_PATHNAME}/cffi-uffi-compat.asd \
${STAGEDIR}${ASDF_PATHNAME}/cffi-grovel.asd \
${STAGEDIR}${ASDF_REGISTRY}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
.for FILE in shareable-vectors.txt allegro-internals.txt mem-vector.txt
@ -64,5 +67,4 @@ do-install:
${INSTALL_DATA} ${WRKSRC}/examples/* ${STAGEDIR}${EXAMPLESDIR}
${INSTALL_DATA} ${WRKSRC}/tests/* ${STAGEDIR}${EXAMPLESDIR}/tests
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -0,0 +1,25 @@
PORTNAME= cl-freebsd-asdf-init
PORTVERSION= 20241212
CATEGORIES= devel
MASTER_SITES= # none
DISTFILES= # none
MAINTAINER= jrm@FreeBSD.org
COMMENT= ASDF configuration for FreeBSD Common Lisp ports
LICENSE= BSD2CLAUSE
NO_ARCH= yes
NO_BUILD= yes
NO_WRKSUBDIR= yes
PLIST_FILES= etc/asdf-init.lisp \
etc/cl-freebsd-asdf-init.lisp
SUB_FILES= cl-freebsd-asdf-init.lisp
do-install:
${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME}.lisp ${STAGEDIR}${PREFIX}/etc/
${RLN} ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.lisp \
${STAGEDIR}${PREFIX}/etc/asdf-init.lisp
.include <bsd.port.mk>

View file

@ -0,0 +1,184 @@
;; cl-freebsd-asdf-init.lisp - Configure ASDF to work with FreeBSD ports
;;
;; SPDX-License-Identifier: BSD-2-Clause
;;
;; Copyright (c) 2003 Henrik Motakef <henrik.motakef@web.de>
;; Copyright (c) 2024 Joseph Mingrone <jrm@FreeBSD.org>
;;
;; This file configures ASDF to work with Common Lisp (CL) installed via
;; FreeBSD ports. To load it when your Lisp implementation starts, add
;;
;; (load "%%PREFIX%%/etc/cl-freebsd-asdf-init.lisp")
;;
;; to your init file.
;;
;; These are the initialization files for the supported CL implementations:
;;
;; CLISP:
;; ~/.clisprc
;;
;; CLOZURE CL / OPENMCL:
;; ~/.ccl-init.lisp
;;
;; SBCL:
;; %%PREFIX%%/etc/sbclrc
;; ~/.sbclrc
;;
;; After that, use ASDF to load systems installed from ports like this:
;;
;; (asdf:load-system :alexandria)
;;
;; ** Detailed Explanation **
;;
;; This ASDF initialization enables working with CL installed via FreeBSD
;; ports by serving three key functions:
;;
;; 1. It configures a central registry to tell ASDF where to find systems
;; installed via FreeBSD CL ports.
;;
;; 2. It sets up output translations so no code from CL ports needs to be
;; compiled at load time.
;;
;; CL ports have binary variants for each supported CL implementation. For
;; example, devel/cl-alexandria includes the Alexandria sources, and
;; devel/cl-alexandria-sbcl installs the compiled code (fasl) for SBCL.
;; The output translations defined here tell ASDF where to look for the
;; binary code.
;;
;; If you prefer to build systems at load time, simply install the CL port
;; without the associated fasl port, and ASDF will build and write fasl to
;; a cache under ${HOME}.
;;
;; 3. It configures specific ASDF output translations for building CL ports.
;;
;;;; Package declaration
(defpackage :freebsd-asdf
(:use :common-lisp)
(:export #:*asdf-pathname*
#:unsupported-lisp-implementation))
(in-package :freebsd-asdf)
;;;; Implementation-specific functions
(define-condition unsupported-lisp-implementation ()
()
(:report (lambda (condition stream)
(declare (ignore condition)
(type stream stream))
(format stream "Your Lisp system, ~A ~A, is ~
currently not supported by the FreeBSD ports system."
(lisp-implementation-type)
(lisp-implementation-version)))))
(defun lisp-specific-fasl-subdir ()
"Return the subdirectory in which fasl files for this Lisp
implementations should be stored, as a string without any slashes.
If no subdirectory for the current implementation is known, signal an
error of type UNSUPPORTED-LISP-IMPLEMENTATION.
This function has to be extended for each new Lisp implementation that
should be able to use the ASDF-based Lisp ports."
#+ccl "cclfasl"
#+clisp "clispfasl"
#+sbcl "sbclfasl"
#-(or ccl clisp sbcl) (error 'unsupported-lisp-implementation))
(defun lisp-specific-fasl-extension ()
"Return the extension used for fasl files for this Lisp implementations as a
string.
This function has to be extended for each new Lisp implementation that
should be able to use the ASDF-based Lisp ports."
#+ccl "fx64fsl"
#+clisp "fas"
#+sbcl "fasl"
;; #-(or clisp cmu sbcl openmcl) (error 'unsupported-lisp-implementation))
#-(or ccl clisp sbcl) (error 'unsupported-lisp-implementation))
;;;; Paths
(defvar *asdf-pathname*
;; Determine the path to the ASDF library to load.
(let* ((port-asdf "%%PREFIX%%/lib/common-lisp/asdf/build/asdf.lisp")
(port-asdf-fasl (concatenate 'string
"%%PREFIX%%/lib/common-lisp/asdf/"
(lisp-specific-fasl-subdir)
"/build/asdf."
(lisp-specific-fasl-extension)))
(asdf-port-p (probe-file port-asdf))
(asdf-port-fasl-p (probe-file port-asdf-fasl)))
(cond
((and asdf-port-p asdf-port-fasl-p) port-asdf-fasl)
((and (member :ccl *features*)) "%%PREFIX%%/lib/ccl/tools/asdf.fx64fsl")
((and (member :clisp *features*)) "%%PREFIX%%/lib/clisp/asdf/asdf.fas")
((and (member :sbcl *features*)) "%%PREFIX%%/lib/sbcl/contrib/asdf.fasl")
(asdf-port-p port-asdf)
(t (error "Could not find any ASDF to load.")))))
(defvar *system-registry*
"%%PREFIX%%/lib/common-lisp/system-registry/"
"FreeBSD's contribution to the central registry for ASDF system
definitions. This will be added to asdf:*central-registry*, you should
modify that in order to add other directories.")
;;;; Load and configure ASDF
;;(load *asdf-pathname* :verbose t :print nil)
(load *asdf-pathname*)
(pushnew *system-registry* asdf:*central-registry*)
;; Set up output translations
;; If we are building a port, redirect fasl files to WRKSRC.
(if (and (uiop:getenv "FBSD_ASDF_COMPILE_PORT")
(uiop:getenv "PORTNAME")
(uiop:getenv "WRKSRC"))
(let* ((wrksrc (uiop:getenv "WRKSRC"))
(portname (uiop:getenv "PORTNAME"))
(source (make-pathname
:directory
(append (pathname-directory
#P"%%PREFIX%%/lib/common-lisp/")
(list portname :wild-inferiors))))
(target (make-pathname
:directory (append (pathname-directory wrksrc)
(list :wild-inferiors))))
(ports-translations '(:ignore-inherited-configuration)))
(pushnew (list source target) ports-translations)
(asdf:initialize-output-translations
(cons :output-translations ports-translations)))
;; On target systems, set up translations to point to installed fasl.
(let ((freebsd-translations '(:ignore-inherited-configuration)))
(dolist (path (directory "%%PREFIX%%/lib/common-lisp/*/"))
(let* ((base-dir (pathname-directory path))
(source (make-pathname
:directory (append base-dir (list :wild-inferiors))
:name :wild
:type :wild))
(ctarget (make-pathname
:directory (append
base-dir
(list (lisp-specific-fasl-subdir)))))
(target (make-pathname
:directory (append base-dir
(list (lisp-specific-fasl-subdir)
:wild-inferiors))
:name :wild
:type :wild)))
;; Only create translation when source is not system registry and
;; ctarget exists.
(when (and
(not (string= *system-registry* (namestring path)))
(uiop:directory-exists-p ctarget))
(pushnew (list source target) freebsd-translations))))
(asdf:initialize-output-translations
(cons :output-translations freebsd-translations))))
;;;; asdf-init.lisp ends here

View file

@ -0,0 +1,15 @@
This ASDF initialization enables working with Common Lisp (CL) installed via
FreeBSD Ports by serving three key functions:
1. It configures a central registry to tell ASDF where to find systems
installed via FreeBSD CL ports.
2. It sets up output translations so no code from CL ports needs to be
compiled at load time.
CL ports have binary variants for each supported CL implementation. For
example, devel/cl-alexandria includes the Alexandria sources, and
devel/cl-alexandria-sbcl installs the compiled code (fasl) for SBCL. The
output translations tell ASDF where to look for the binary code.
3. It configures specific ASDF output translations for building CL ports.

View file

@ -1,6 +1,6 @@
PORTNAME= infix
PORTVERSION= 19960628
PORTREVISION= 94
PORTREVISION= 95
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -18,9 +18,7 @@ LICENSE_PERMS= dist-mirror pkg-mirror auto-accept
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/infix/infix.asd:devel/cl-infix
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/infix/infix.asd:devel/cl-infix
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= infix
PORTVERSION= 19960628
PORTREVISION= 3
PORTREVISION= 4
CATEGORIES= devel lisp
MASTER_SITES= http://ftp.linux.org.uk/pub/lisp/cclan/ \
ftp://ftp.ntnu.no/pub/lisp/cclan/ \
@ -22,7 +22,7 @@ LICENSE_PERMS= dist-mirror pkg-mirror auto-accept
WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
NO_BUILD= yes
USE_ASDF= yes
USES= cl
OPTIONS_DEFINE= DOCS
@ -34,11 +34,10 @@ do-install:
@${INSTALL_DATA} ${WRKSRC}/*.lisp ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/infix.asd ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/infix.system ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/infix.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/infix.asd ${STAGEDIR}${ASDF_REGISTRY}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
.for FILE in COPYING infix.3lisp
@${INSTALL_DATA} ${WRKSRC}/${FILE} ${STAGEDIR}${DOCSDIR}
.endfor
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= port
PORTVERSION= 2002.10.02.1
PORTREVISION= 92
PORTREVISION= 93
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -12,9 +12,7 @@ WWW= https://clocc.sourceforge.net
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/port/port.asd:devel/cl-port
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/port/port.asd:devel/cl-port
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= port
PORTVERSION= 2002.10.02.1
PORTREVISION= 3
PORTREVISION= 4
CATEGORIES= devel lisp
MASTER_SITES= ftp://ftp.linux.org.uk/pub/lisp/experimental/cclan/ \
ftp://ftp.ntnu.no/pub/lisp/cclan/ \
@ -15,7 +15,7 @@ WWW= https://clocc.sourceforge.net
WRKSRC= ${WRKDIR}/clocc-${PORTNAME}
NO_BUILD= yes
USE_ASDF= yes
USES= cl
OPTIONS_DEFINE= DOCS
@ -24,9 +24,8 @@ do-install:
@${INSTALL_DATA} ${WRKSRC}/clocc-port.asd ${STAGEDIR}${ASDF_PATHNAME}/port.asd
@${INSTALL_DATA} ${WRKSRC}/port.system ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/*.lisp ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/port.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/port.asd ${STAGEDIR}${ASDF_REGISTRY}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/port.html ${STAGEDIR}${DOCSDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= split-sequence
PORTVERSION= 20011114.1
PORTREVISION= 91
PORTREVISION= 92
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -12,9 +12,7 @@ WWW= https://www.cliki.net/SPLIT-SEQUENCE
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/split-sequence/split-sequence.asd:devel/cl-split-sequence
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/split-sequence/split-sequence.asd:devel/cl-split-sequence
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= split-sequence
PORTVERSION= 20011114.1
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= devel lisp
MASTER_SITES= ftp://ftp.linux.org.uk/pub/lisp/experimental/cclan/ \
ftp://ftp.ntnu.no/pub/lisp/cclan/ \
@ -15,13 +15,12 @@ WWW= https://www.cliki.net/SPLIT-SEQUENCE
WRKSRC= ${WRKDIR}/${PORTNAME}
NO_BUILD= yes
USE_ASDF= yes
USES= cl
do-install:
@${MKDIR} ${STAGEDIR}${ASDF_PATHNAME} ${STAGEDIR}${ASDF_REGISTRY}
@${INSTALL_DATA} ${WRKSRC}/split-sequence.lisp ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/split-sequence.asd ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/split-sequence.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/split-sequence.asd ${STAGEDIR}${ASDF_REGISTRY}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= trivial-features
PORTVERSION= 2010.01.16
PORTREVISION= 91
PORTREVISION= 92
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -12,9 +12,7 @@ WWW= https://www.cliki.net/trivial-features
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/trivial-features/trivial-features.asd:devel/cl-trivial-features
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/trivial-features/trivial-features.asd:devel/cl-trivial-features
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= trivial-features
PORTVERSION= 2010.01.16
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= devel lisp
MASTER_SITES= LOCAL/olgeni
PKGNAMEPREFIX= cl-
@ -11,7 +11,7 @@ WWW= https://www.cliki.net/trivial-features
NO_BUILD= yes
USE_ASDF= yes
USES= cl
OPTIONS_DEFINE= DOCS EXAMPLES
@ -20,7 +20,7 @@ do-install:
@${MKDIR} ${STAGEDIR}${ASDF_PATHNAME}/src
@${INSTALL_DATA} ${WRKSRC}/src/*.lisp ${STAGEDIR}${ASDF_PATHNAME}/src
@${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.asd ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/${PORTNAME}.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/${PORTNAME}.asd ${STAGEDIR}${ASDF_REGISTRY}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
.for FILE in README SPEC
@${INSTALL_DATA} ${WRKSRC}/${FILE} ${STAGEDIR}${DOCSDIR}
@ -28,5 +28,4 @@ do-install:
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
@${INSTALL_DATA} ${WRKSRC}/tests/* ${STAGEDIR}${EXAMPLESDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= trivial-gray-streams
PORTVERSION= 2008.11.02
PORTREVISION= 91
PORTREVISION= 92
CATEGORIES= devel lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -12,9 +12,7 @@ WWW= https://www.cliki.net/trivial-gray-streams
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/trivial-gray-streams/trivial-gray-streams.asd:devel/cl-trivial-gray-streams
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/trivial-gray-streams/trivial-gray-streams.asd:devel/cl-trivial-gray-streams
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= trivial-gray-streams
PORTVERSION= 2008.11.02
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= devel lisp
MASTER_SITES= LOCAL/olgeni
PKGNAMEPREFIX= cl-
@ -11,7 +11,7 @@ WWW= https://www.cliki.net/trivial-gray-streams
NO_BUILD= yes
USE_ASDF= yes
USES= cl
OPTIONS_DEFINE= DOCS
@ -19,9 +19,8 @@ do-install:
@${MKDIR} ${STAGEDIR}${ASDF_PATHNAME} ${STAGEDIR}${ASDF_REGISTRY}
@${INSTALL_DATA} ${WRKSRC}/*.lisp ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.asd ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/${PORTNAME}.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/${PORTNAME}.asd ${STAGEDIR}${ASDF_REGISTRY}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/README ${STAGEDIR}${DOCSDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -22,12 +22,10 @@ CCL_DIRECTORY= ${PREFIX}/lib/ccl
# the following files will not be installed
EXCLUDE= cocoa-ide lisp-kernel scripts fx86cl fx86cl.image
USE_ASDF= yes
USES= cl
CONFLICTS_INSTALL= cclive # bin/ccl
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
BUILD_DEPENDS+= as:devel/binutils
LISP_ARCH= x8664

View file

@ -1,10 +1,8 @@
[
{ type: install
message: <<EOM
You can permanently enable ASDF package management by using the
following commands in your .ccl-init.lisp file:
(require 'asdf)
To work with Common Lisp ports, create ~/.ccl-init.lisp with this line:
(load "/usr/local/etc/cl-freebsd-asdf-init.lisp")
EOM
}
]

View file

@ -66,7 +66,7 @@ OPTIONS_RADIO= CLX
OPTIONS_RADIO_CLX= CLX_MIT CLX_NEW
CLX_DESC= X11 Module Selection
OPTIONS_DEFAULT=BDB RAWSOCK ZLIB
OPTIONS_DEFAULT= ASDF BDB RAWSOCK ZLIB
SUB_FILES= pkg-message

View file

@ -5,7 +5,7 @@
PORTNAME= sbcl
DISTVERSION= 2.4.11
DISTVERSIONSUFFIX= -source
PORTREVISION= 1
PORTREVISION= 2
PORTEPOCH= 1
CATEGORIES= lang lisp
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${DISTVERSION} \
@ -24,11 +24,11 @@ ONLY_FOR_ARCHS= amd64 i386
LIB_DEPENDS= libgmp.so:math/gmp \
libmpfr.so:math/mpfr
RUN_DEPENDS= cl-asdf>=0:devel/cl-asdf
RUN_DEPENDS= cl-freebsd-asdf-init>=0:devel/cl-freebsd-asdf-init
USES= gmake makeinfo tar:bzip2
SUB_FILES= pkg-message sbclrc
SUB_FILES= sbclrc
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}

View file

@ -1,10 +0,0 @@
[
{ type: install
message: <<EOM
For Common Lisp ports requiring the asdf system definition library from
devel/cl-asdf, %%PREFIX%%/etc/asdf-init.lisp has been set to load in
%%PREFIX%%/etc/sbclrc. If you plan to use Quicklisp, you must remove
this line from %%PREFIX%%/etc/sbclrc.
EOM
}
]

View file

@ -1 +1 @@
(load "%%PREFIX%%/etc/asdf-init.lisp")
(load "%%PREFIX%%/etc/cl-freebsd-asdf-init.lisp")

View file

@ -1,6 +1,6 @@
PORTNAME= md5
PORTVERSION= 1.8.5
PORTREVISION= 91
PORTREVISION= 92
CATEGORIES= security lisp
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -12,9 +12,7 @@ WWW= https://www.cliki.net/MD5
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/md5/md5.asd:security/cl-md5
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/md5/md5.asd:security/cl-md5
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= md5
PORTVERSION= 1.8.5
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= security lisp
MASTER_SITES= http://ftp.de.debian.org/debian/pool/main/c/cl-md5/
DISTNAME= ${PKGNAMEPREFIX}${PORTNAME}_${PORTVERSION}.orig
@ -13,13 +13,12 @@ WWW= https://www.cliki.net/MD5
WRKSRC= ${WRKDIR}/${PKGNAMEPREFIX}${PORTNAME}-${DISTVERSION}
NO_BUILD= yes
USE_ASDF= yes
USES= cl
do-install:
@${MKDIR} ${STAGEDIR}${ASDF_PATHNAME} ${STAGEDIR}${ASDF_REGISTRY}
@${INSTALL_DATA} ${WRKSRC}/*.lisp ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/*.asd ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/md5.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/md5.asd ${STAGEDIR}${ASDF_REGISTRY}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= meta
PORTVERSION= 0.1
PORTREVISION= 92
PORTREVISION= 93
PORTEPOCH= 1
CATEGORIES= textproc lisp
PKGNAMEPREFIX= cl-
@ -13,9 +13,7 @@ WWW= http://home.pipeline.com/~hbaker1/Prag-Parse.html
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/meta/meta.asd:textproc/cl-meta
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/meta/meta.asd:textproc/cl-meta
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= meta
PORTVERSION= 0.1
PORTREVISION= 3
PORTREVISION= 4
PORTEPOCH= 1
CATEGORIES= textproc lisp
MASTER_SITES= ftp://ftp.linux.org.uk/pub/lisp/experimental/cclan/ \
@ -20,7 +20,7 @@ EXPIRATION_DATE=2024-12-31
WRKSRC= ${WRKDIR}/${PORTNAME}
NO_BUILD= yes
USE_ASDF= yes
USES= cl
OPTIONS_DEFINE= DOCS
@ -33,5 +33,4 @@ do-install:
@${INSTALL_DATA} ${WRKSRC}/Prag-Parse.* ${STAGEDIR}${DOCSDIR}
@${INSTALL_DATA} ${WRKSRC}/README ${STAGEDIR}${DOCSDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= cl-ppcre
PORTVERSION= 2.1.2
PORTREVISION= 8
PORTREVISION= 9
CATEGORIES= textproc lisp
DISTFILES= # none
@ -11,9 +11,7 @@ WWW= http://www.weitz.de/cl-ppcre/
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/cl-ppcre/cl-ppcre.asd:textproc/cl-ppcre
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/cl-ppcre/cl-ppcre.asd:textproc/cl-ppcre
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,7 @@
PORTNAME= cl-ppcre
DISTVERSIONPREFIX= v
DISTVERSION= 2.1.2
PORTREVISION= 1
CATEGORIES= textproc lisp
MAINTAINER= olgeni@FreeBSD.org
@ -9,7 +10,7 @@ WWW= http://www.weitz.de/cl-ppcre/
LICENSE= BSD2CLAUSE
USE_ASDF= yes
USES= cl
USE_GITHUB= yes
GH_ACCOUNT= edicl
@ -60,5 +61,4 @@ do-install-DOCS-on:
${INSTALL_DATA} ${WRKSRC}/CHANGELOG ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/docs/index.html ${STAGEDIR}${DOCSDIR}
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= lml
PORTVERSION= 2.5.7
PORTREVISION= 89
PORTREVISION= 90
CATEGORIES= www textproc
PKGNAMEPREFIX= cl-
DISTFILES= # none
@ -12,9 +12,7 @@ WWW= http://lml.b9.com/
BUILD_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/system-registry/lml.asd:www/cl-lml
RUN_DEPENDS= ${LOCALBASE}/${CL_LIBDIR_REL}/system-registry/lml.asd:www/cl-lml
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,6 +1,6 @@
PORTNAME= lml
PORTVERSION= 2.5.7
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= www textproc
MASTER_SITES= http://files.b9.com/lml/ \
http://people.bsdgroup.de/~as/freebsd/distfiles/
@ -12,7 +12,7 @@ WWW= http://lml.b9.com/
NO_BUILD= yes
USE_ASDF= yes
USES= cl
PORTDOCS= Makefile make.lisp readme.html readme.lml
@ -22,11 +22,10 @@ do-install:
@${MKDIR} ${STAGEDIR}${ASDF_PATHNAME} ${STAGEDIR}${ASDF_REGISTRY}
@${INSTALL_DATA} ${WRKSRC}/*.lisp ${STAGEDIR}${ASDF_PATHNAME}
@${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.asd ${STAGEDIR}${ASDF_PATHNAME}
@${LN} -sf ${ASDF_PATHNAME}/${PORTNAME}.asd ${STAGEDIR}${ASDF_REGISTRY}
@${RLN} ${STAGEDIR}${ASDF_PATHNAME}/${PORTNAME}.asd ${STAGEDIR}${ASDF_REGISTRY}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
.for FILE in ${PORTDOCS}
@${INSTALL_DATA} ${WRKSRC}/doc/${FILE} ${STAGEDIR}${DOCSDIR}
.endfor
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -21,7 +21,6 @@ BUILD_DEPENDS= sbcl:lang/sbcl \
USES= autoreconf gmake
USE_GITHUB= yes
USE_SBCL= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-compression \

View file

@ -1,6 +1,6 @@
PORTNAME= clx
DISTVERSION= 0.7.6
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= x11 lisp
PKGNAMEPREFIX= cl-
PKGNAMESUFFIX= -sbcl
@ -15,9 +15,7 @@ LICENSE= MIT
BUILD_DEPENDS= ${PKGNAMEPREFIX}${PORTNAME}>=0:x11/${PKGNAMEPREFIX}${PORTNAME}
RUN_DEPENDS= ${PKGNAMEPREFIX}${PORTNAME}>=0:x11/${PKGNAMEPREFIX}${PORTNAME}
USE_ASDF_FASL= yes
USES= cl
FASL_TARGET= sbcl
FASL_BUILD= yes
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>

View file

@ -1,5 +1,6 @@
PORTNAME= clx
DISTVERSION= 0.7.6
PORTREVISION= 1
CATEGORIES= x11 lisp
PKGNAMEPREFIX= cl-
@ -9,8 +10,7 @@ WWW= https://www.cliki.net/CLX
LICENSE= MIT
USES= makeinfo tar:tgz
USE_ASDF= yes
USES= cl makeinfo tar:tgz
USE_GITHUB= yes
GH_ACCOUNT= sharplispers
@ -53,5 +53,4 @@ do-install-DOCS-on:
${MKDIR} ${STAGEDIR}${DOCSDIR}
(cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR})
.include "${.CURDIR}/../../devel/cl-asdf/bsd.cl-asdf.mk"
.include <bsd.port.mk>