summaryrefslogtreecommitdiff
path: root/dev-lisp
diff options
context:
space:
mode:
authorPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
committerPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
commitecdac123787b96ce6649f0f91da12ea6458cc2b1 (patch)
treeb89c74d9e6fe6e8aebc4c77bcbeb4ab73214127d /dev-lisp
parent1be72aa41cf41dedadeecf59dca9f01de6381f5e (diff)
downloadbaldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.gz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.xz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.zip
Updating liguros repo
Diffstat (limited to 'dev-lisp')
-rw-r--r--dev-lisp/abcl/Manifest1
-rw-r--r--dev-lisp/abcl/abcl-1.5.0.ebuild34
-rw-r--r--dev-lisp/abcl/metadata.xml17
-rw-r--r--dev-lisp/alexandria/Manifest1
-rw-r--r--dev-lisp/alexandria/alexandria-20171029.ebuild39
-rw-r--r--dev-lisp/alexandria/files/alexandria-fix-docstrings.patch29
-rw-r--r--dev-lisp/alexandria/metadata.xml45
-rw-r--r--dev-lisp/asdf/Manifest3
-rw-r--r--dev-lisp/asdf/asdf-3.1.5.ebuild46
-rw-r--r--dev-lisp/asdf/asdf-3.3.1.ebuild50
-rw-r--r--dev-lisp/asdf/asdf-3.3.2-r1.ebuild52
-rw-r--r--dev-lisp/asdf/asdf-3.3.2.ebuild50
-rw-r--r--dev-lisp/asdf/files/gentoo-init.lisp12
-rw-r--r--dev-lisp/asdf/files/source-registry.conf5
-rw-r--r--dev-lisp/asdf/metadata.xml9
-rw-r--r--dev-lisp/c2ffi/Manifest1
-rw-r--r--dev-lisp/c2ffi/c2ffi-9.0.0.20191017.ebuild26
-rw-r--r--dev-lisp/c2ffi/c2ffi-9.0.0.9999.ebuild22
-rw-r--r--dev-lisp/c2ffi/files/c2ffi-9.0.0.20191017-fix-lib-location.patch49
-rw-r--r--dev-lisp/c2ffi/metadata.xml16
-rw-r--r--dev-lisp/cl-ppcre-unicode/Manifest2
-rw-r--r--dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.0.11.ebuild26
-rw-r--r--dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.1.0.ebuild26
-rw-r--r--dev-lisp/cl-ppcre-unicode/metadata.xml23
-rw-r--r--dev-lisp/cl-ppcre/Manifest2
-rw-r--r--dev-lisp/cl-ppcre/cl-ppcre-2.0.11.ebuild30
-rw-r--r--dev-lisp/cl-ppcre/cl-ppcre-2.1.0.ebuild30
-rw-r--r--dev-lisp/cl-ppcre/metadata.xml34
-rw-r--r--dev-lisp/cl-unicode/Manifest1
-rw-r--r--dev-lisp/cl-unicode/cl-unicode-0.1.5.ebuild42
-rw-r--r--dev-lisp/cl-unicode/metadata.xml30
-rw-r--r--dev-lisp/clisp/Manifest3
-rw-r--r--dev-lisp/clisp/clisp-2.49-r9.ebuild144
-rw-r--r--dev-lisp/clisp/clisp-2.49.90.ebuild140
-rw-r--r--dev-lisp/clisp/clisp-2.49.92.ebuild140
-rw-r--r--dev-lisp/clisp/files/clisp-2.49-bits_ipctypes_to_sys_ipc.patch21
-rw-r--r--dev-lisp/clisp/files/clisp-2.49-get_hostname.patch56
-rw-r--r--dev-lisp/clisp/files/clisp-2.49-tinfo.patch15
-rw-r--r--dev-lisp/clisp/files/clisp-2.49.90-after_glibc_cfree_bdb.patch185
-rw-r--r--dev-lisp/clisp/files/clisp-2.49.92-after_glibc_cfree_bdb.patch185
-rw-r--r--dev-lisp/clisp/metadata.xml29
-rw-r--r--dev-lisp/clozurecl/Manifest5
-rw-r--r--dev-lisp/clozurecl/clozurecl-1.11.5.ebuild99
-rw-r--r--dev-lisp/clozurecl/files/clozurecl-1.11.5-no-pie-32.patch7
-rw-r--r--dev-lisp/clozurecl/metadata.xml12
-rw-r--r--dev-lisp/clx/Manifest1
-rw-r--r--dev-lisp/clx/clx-0.7.5.ebuild36
-rw-r--r--dev-lisp/clx/metadata.xml25
-rw-r--r--dev-lisp/cmucl/Manifest2
-rw-r--r--dev-lisp/cmucl/cmucl-21c.ebuild109
-rw-r--r--dev-lisp/cmucl/files/cmucl-21c-build.patch22
-rw-r--r--dev-lisp/cmucl/files/cmucl-21c-execstack-fixes.patch118
-rw-r--r--dev-lisp/cmucl/files/cmuclrc9
-rw-r--r--dev-lisp/cmucl/files/site-init.lisp.in56
-rw-r--r--dev-lisp/cmucl/metadata.xml38
-rw-r--r--dev-lisp/ecls/Manifest2
-rw-r--r--dev-lisp/ecls/ecls-16.1.3.ebuild96
-rw-r--r--dev-lisp/ecls/ecls-20.4.24.ebuild96
-rw-r--r--dev-lisp/ecls/files/README.Gentoo15
-rw-r--r--dev-lisp/ecls/files/ecls-16.1.3-build.patch10
-rw-r--r--dev-lisp/ecls/files/ecls-16.1.3-headers-gentoo.patch15
-rw-r--r--dev-lisp/ecls/metadata.xml23
-rw-r--r--dev-lisp/flexi-streams/Manifest2
-rw-r--r--dev-lisp/flexi-streams/flexi-streams-1.0.16.ebuild25
-rw-r--r--dev-lisp/flexi-streams/flexi-streams-1.0.17.ebuild25
-rw-r--r--dev-lisp/flexi-streams/metadata.xml28
-rw-r--r--dev-lisp/gcl/Manifest4
-rw-r--r--dev-lisp/gcl/files/64gcl-gentoo.el5
-rw-r--r--dev-lisp/gcl/files/bootstrap-gcl7
-rw-r--r--dev-lisp/gcl/files/gcl-2.6.12-gcc5.patch8
-rw-r--r--dev-lisp/gcl/files/gcl-gmp-6.patch8
-rw-r--r--dev-lisp/gcl/files/gcl-readline-6.3.patch18
-rw-r--r--dev-lisp/gcl/files/gcl-tcl-8.6.patch103
-rw-r--r--dev-lisp/gcl/gcl-2.6.10.ebuild153
-rw-r--r--dev-lisp/gcl/gcl-2.6.12.ebuild149
-rw-r--r--dev-lisp/gcl/metadata.xml18
-rw-r--r--dev-lisp/hyperspec/Manifest1
-rw-r--r--dev-lisp/hyperspec/hyperspec-7.0-r1.ebuild24
-rw-r--r--dev-lisp/hyperspec/metadata.xml9
-rw-r--r--dev-lisp/metadata.xml40
-rw-r--r--dev-lisp/roswell/Manifest4
-rw-r--r--dev-lisp/roswell/metadata.xml21
-rw-r--r--dev-lisp/roswell/roswell-19.08.10.101.ebuild22
-rw-r--r--dev-lisp/roswell/roswell-19.09.12.102.ebuild22
-rw-r--r--dev-lisp/roswell/roswell-19.12.13.103.ebuild23
-rw-r--r--dev-lisp/roswell/roswell-20.01.14.104.ebuild23
-rw-r--r--dev-lisp/sbcl/Manifest34
-rw-r--r--dev-lisp/sbcl/files/bsd-sockets-test-1.2.11.patch350
-rw-r--r--dev-lisp/sbcl/files/bsd-sockets-test-2.0.5.patch385
-rw-r--r--dev-lisp/sbcl/files/concurrency-test-1.2.6.patch24
-rw-r--r--dev-lisp/sbcl/files/concurrency-test-1.3.15.patch17
-rw-r--r--dev-lisp/sbcl/files/concurrency-test-1.5.3.patch17
-rw-r--r--dev-lisp/sbcl/files/concurrency-test-2.0.1.patch12
-rw-r--r--dev-lisp/sbcl/files/gentoo-fix_install_man.patch12
-rw-r--r--dev-lisp/sbcl/files/sb-posix-test-1.2.15.patch40
-rw-r--r--dev-lisp/sbcl/files/sbcl-1.1.17-gentoo-fix_nopie_for_hardened_toolchain.patch22
-rw-r--r--dev-lisp/sbcl/files/sbcl-1.2.11-solaris.patch12
-rw-r--r--dev-lisp/sbcl/files/sbcl-1.2.13-verbose-build.patch25
-rw-r--r--dev-lisp/sbcl/files/sbcl-1.3.11-config.patch16
-rw-r--r--dev-lisp/sbcl/files/sbcl-1.4.0-bsd-sockets-test.patch383
-rw-r--r--dev-lisp/sbcl/files/sbcl-1.4.0-verbose-build.patch29
-rw-r--r--dev-lisp/sbcl/files/verbose-build-2.0.3.patch29
-rw-r--r--dev-lisp/sbcl/metadata.xml29
-rw-r--r--dev-lisp/sbcl/sbcl-1.3.11.ebuild242
-rw-r--r--dev-lisp/sbcl/sbcl-1.4.9.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-1.5.6.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-1.5.7.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-1.5.8.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-2.0.0.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-2.0.1.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-2.0.3.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-2.0.4.ebuild246
-rw-r--r--dev-lisp/sbcl/sbcl-2.0.5.ebuild246
-rw-r--r--dev-lisp/trivial-gray-streams/Manifest1
-rw-r--r--dev-lisp/trivial-gray-streams/metadata.xml13
-rw-r--r--dev-lisp/trivial-gray-streams/trivial-gray-streams-20170830.ebuild17
-rw-r--r--dev-lisp/trivial-gray-streams/trivial-gray-streams-99999999.ebuild16
-rw-r--r--dev-lisp/uiop/Manifest3
-rw-r--r--dev-lisp/uiop/metadata.xml9
-rw-r--r--dev-lisp/uiop/uiop-3.1.5.ebuild26
-rw-r--r--dev-lisp/uiop/uiop-3.3.1.ebuild27
-rw-r--r--dev-lisp/uiop/uiop-3.3.2.ebuild17
122 files changed, 7230 insertions, 0 deletions
diff --git a/dev-lisp/abcl/Manifest b/dev-lisp/abcl/Manifest
new file mode 100644
index 000000000000..96ca2c285a73
--- /dev/null
+++ b/dev-lisp/abcl/Manifest
@@ -0,0 +1 @@
+DIST abcl-src-1.5.0.tar.gz 1187678 BLAKE2B 4c6993ab90d6fe12e93bf185ecdc16dd5c69ff5c65881e74db51ba9a8167e3a3de4b25ff9971084e92499f654aacec2a07757d100a5977944076476d47c17438 SHA512 d56c23a82103dfebb3361903af096f923738008e551f3b5e07e00f0423c8ade0b07a388b7834b5d79d9191863b38db2c17fa27bffd848d7cba88d6bb67e32db3
diff --git a/dev-lisp/abcl/abcl-1.5.0.ebuild b/dev-lisp/abcl/abcl-1.5.0.ebuild
new file mode 100644
index 000000000000..e044eb611f12
--- /dev/null
+++ b/dev-lisp/abcl/abcl-1.5.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils java-pkg-2 java-ant-2
+
+MY_P=${PN}-src-${PV}
+
+DESCRIPTION="Armed Bear Common Lisp is a Common Lisp implementation for the JVM."
+HOMEPAGE="http://common-lisp.net/project/armedbear/"
+SRC_URI="http://abcl.org/releases/${PV}/${MY_P}.tar.gz"
+RESTRICT="mirror"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+DEPEND=">=virtual/jdk-1.5"
+RDEPEND=">=virtual/jre-1.5"
+
+S="${WORKDIR}"/${MY_P}
+
+src_compile() {
+ eant abcl.compile || die "Can't compile ABCL"
+ eant abcl.jar || die "Can't make ABCL jar archive"
+}
+
+src_install() {
+ java-pkg_dojar dist/abcl.jar
+ java-pkg_dolauncher ${PN} --java_args "-server -Xrs" --main org.armedbear.lisp.Main
+ dodoc README
+}
diff --git a/dev-lisp/abcl/metadata.xml b/dev-lisp/abcl/metadata.xml
new file mode 100644
index 000000000000..bdf8ef2124c1
--- /dev/null
+++ b/dev-lisp/abcl/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>java@gentoo.org</email>
+ <name>Java</name>
+ </maintainer>
+ <longdescription>
+ Armed Bear Common Lisp (ABCL) is an implementation of ANSI Common
+ Lisp that runs in a Java virtual machine.
+ </longdescription>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/alexandria/Manifest b/dev-lisp/alexandria/Manifest
new file mode 100644
index 000000000000..646c8333fee8
--- /dev/null
+++ b/dev-lisp/alexandria/Manifest
@@ -0,0 +1 @@
+DIST alexandria-20171029.tar.bz2 45812 BLAKE2B 812f43483a0b25e4c4d481deec90ac1681a3c76062f5bf43b14530b239b2978e8d0cf735249b1093298db2761dc80a7d81e54da1e763db469b691b60d6db5d20 SHA512 a0a7386af94bae00139e3d06306169883cb1c5498c84d7a6db552a5dfa2ff8516d62609cb8a059c11f4200d507737ba99032d81b5a97112a2f3e7850572060e2
diff --git a/dev-lisp/alexandria/alexandria-20171029.ebuild b/dev-lisp/alexandria/alexandria-20171029.ebuild
new file mode 100644
index 000000000000..bd042f0736f8
--- /dev/null
+++ b/dev-lisp/alexandria/alexandria-20171029.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3 eutils
+
+DESCRIPTION="A collection of portable utilities for Common Lisp"
+HOMEPAGE="http://common-lisp.net/project/alexandria/"
+if [[ ${PV} == 9999* ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://gitlab.common-lisp.net/alexandria/alexandria.git"
+else
+ SRC_URI="mirror://gentoo/${P}.tar.bz2"
+ KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+fi
+
+LICENSE="public-domain"
+SLOT="0"
+IUSE="doc"
+
+DEPEND="doc? ( sys-apps/texinfo )"
+RDEPEND=""
+
+src_prepare() {
+ eapply "${FILESDIR}/${PN}-fix-docstrings.patch"
+ eapply_user
+}
+
+src_compile() {
+ use doc && emake -C doc
+}
+
+src_install() {
+ common-lisp-install-sources -t all *.lisp LICENCE
+ common-lisp-install-asdf
+ dodoc README AUTHORS
+ use doc && doinfo doc/${PN}.info && dodoc doc/{"${PN}.html","${PN}.pdf"}
+}
diff --git a/dev-lisp/alexandria/files/alexandria-fix-docstrings.patch b/dev-lisp/alexandria/files/alexandria-fix-docstrings.patch
new file mode 100644
index 000000000000..747c9e3bf59d
--- /dev/null
+++ b/dev-lisp/alexandria/files/alexandria-fix-docstrings.patch
@@ -0,0 +1,29 @@
+diff -Nuar a/doc/docstrings.lisp b/doc/docstrings.lisp
+--- a/doc/docstrings.lisp 2016-12-11 00:04:21.272877121 +0100
++++ b/doc/docstrings.lisp 2016-12-11 00:05:03.752876882 +0100
+@@ -718,7 +718,7 @@
+ ;; sbcl.texinfo defines macros that expand @&key and friends to &key.
+ (mapcar (lambda (name)
+ (if (member name lambda-list-keywords)
+- (format nil "@~A" name)
++ (format nil "~A" name)
+ name))
+ (lambda-list doc)))))
+
+@@ -833,11 +833,11 @@
+ (flet ((macro (name)
+ (let ((string (string-downcase name)))
+ (format *texinfo-output* "@macro ~A~%~A~%@end macro~%" string string))))
+- (macro '&allow-other-keys)
+- (macro '&optional)
+- (macro '&rest)
+- (macro '&key)
+- (macro '&body)))
++ (macro 'allow-other-keys)
++ (macro 'optional)
++ (macro 'rest)
++ (macro 'key)
++ (macro 'body)))
+
+ (defun generate-includes (directory packages &key (base-package :cl-user))
+ "Create files in `directory' containing Texinfo markup of all
diff --git a/dev-lisp/alexandria/metadata.xml b/dev-lisp/alexandria/metadata.xml
new file mode 100644
index 000000000000..02cd3b76ff59
--- /dev/null
+++ b/dev-lisp/alexandria/metadata.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ Alexandria is a project and a library.
+
+ As a project Alexandria's goal is to reduce duplication of effort and
+ improve portability of Common Lisp code according to its own
+ idiosyncratic and rather conservative aesthetic. What this actually
+ means is open to debate, but each project member has a veto on all
+ project activities, so a degree of conservativism is inevitable.
+
+ As a library Alexandria is one of the means by which the project
+ strives for its goals. Alexandria is a collection of portable public
+ domain utilities that meet the following constraints:
+
+ * Utilities, not extensions: Alexandria will not contain conceptual
+ extensions to Common Lisp, instead limiting itself to tools and
+ utilities that fit well within the framework of standard ANSI Common
+ Lisp. Test-frameworks, system definitions, logging facilities,
+ serialization layers, etc. are all outside the scope of Alexandria
+ as a library, though well within the scope of Alexandria as a project.
+ * Conservative: Alexandria limits itself to what project members
+ consider conservative utilities. Alexandria does not and will not
+ include anaphoric constructs, loop-like binding macros, etc.
+ * Portable: Alexandria limits itself to portable parts of Common
+ Lisp. Even apparently conservative and usefull functions remain
+ outside the scope of Alexandria if they cannot be implemented
+ portably. Portability is here defined as portable within a
+ conforming implementation: implementation bugs are not considered
+ portability issues.
+ * Team player: Alexandria will not (initially, at least) subsume
+ or provide functionality for which good-quality special-purpose
+ packages exist, like split-sequence. Instead, third party packages
+ such as that may be "blessed".
+ </longdescription>
+ <upstream>
+ <remote-id type="gitlab">alexandria/alexandria</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/asdf/Manifest b/dev-lisp/asdf/Manifest
new file mode 100644
index 000000000000..9c87831a7eb5
--- /dev/null
+++ b/dev-lisp/asdf/Manifest
@@ -0,0 +1,3 @@
+DIST asdf-3.1.5.tar.gz 400359 BLAKE2B 586a66799a37259694baa673f2849e183fac5fedfe5ff5c92529d47fc0954d40b48bbc095db926b9ea2214b551729c269d0925e4396a52310b72fd5f21842f49 SHA512 937d45eabea0853cd1b2e78e84cf33e7b55065857ffcf49fd87ccd60e21ae09c6dc7ab3649d48b37aeb1beaeeaf6c816e5ce035f0283707105296fb976044516
+DIST asdf-3.3.1.tar.gz 479255 BLAKE2B 5161b79741a52721eaa4da80a61bbe51e924967ecb744a087fdcbd99407abcc42faf39eafe6d30af7dd8af751a80caaf23e93ce42aa5f584123a1e8b528cc613 SHA512 bf5efec4518eb5312ce743c0fbe60c587bebfe26c36c833c163d67bf8631e18eeb293f2185e547f6be10da061a17f024d9f4a3a0808727d7b9b3a7d7a0faf133
+DIST asdf-3.3.2.tar.gz 482616 BLAKE2B 860728720ccb02debee6a826d8b27bfd8f5fea3daa529ecfc8d2f5564c77340a38582ccbccf4f311c644bdeccd7348004690929185aa70c3dc0f6b4124616df8 SHA512 f8e065383d6e82754c87d309a8b500ad213e09d1375792fd475eb169d9f880d97b26072e608046d61c83512645781cded09dcff22052e214e8e3639f2a978c74
diff --git a/dev-lisp/asdf/asdf-3.1.5.ebuild b/dev-lisp/asdf/asdf-3.1.5.ebuild
new file mode 100644
index 000000000000..396347e26b05
--- /dev/null
+++ b/dev-lisp/asdf/asdf-3.1.5.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils prefix
+
+DESCRIPTION="ASDF is Another System Definition Facility for Common Lisp"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/${PN}/archives/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PVR}"
+KEYWORDS="~alpha amd64 ~ia64 ppc ppc64 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="doc"
+
+DEPEND="!dev-lisp/cl-${PN}
+ !<dev-lisp/asdf-2.33-r3
+ doc? ( virtual/texi2dvi )"
+RDEPEND=""
+PDEPEND="~dev-lisp/uiop-${PV}"
+
+#S="${WORKDIR}"
+
+src_compile() {
+ make
+ use doc && make doc
+}
+
+src_install() {
+ insinto /usr/share/common-lisp/source/${PN}
+ doins -r build version.lisp-expr
+ dodoc README.md TODO
+ dohtml doc/*.{html,css,ico,png}
+ if use doc; then
+ dohtml -r doc/index.html
+ insinto /usr/share/doc/${PF}
+ #doins doc/${PN}.pdf
+ fi
+
+ insinto /etc/common-lisp
+ cd "${T}"
+ cp "${FILESDIR}"/gentoo-init.lisp "${FILESDIR}"/source-registry.conf .
+ eprefixify gentoo-init.lisp source-registry.conf
+ doins gentoo-init.lisp source-registry.conf
+}
diff --git a/dev-lisp/asdf/asdf-3.3.1.ebuild b/dev-lisp/asdf/asdf-3.3.1.ebuild
new file mode 100644
index 000000000000..aed7e6593218
--- /dev/null
+++ b/dev-lisp/asdf/asdf-3.3.1.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils prefix common-lisp-3
+
+DESCRIPTION="ASDF is Another System Definition Facility for Common Lisp"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/${PN}/archives/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PVR}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="doc"
+
+DEPEND="!dev-lisp/cl-${PN}
+ !<dev-lisp/asdf-2.33-r3
+ doc? ( virtual/texi2dvi )"
+PDEPEND="virtual/commonlisp
+ ~dev-lisp/uiop-${PV}"
+
+install_docs() {
+ (cd doc ; dodoc *.{html,css,ico,png} "${PN}.pdf" ; dodoc -r asdf )
+ if has_version ">=dev-lisp/sbcl-1.4.0" ; then
+ (cd doc ; doinfo "${PN}.info" )
+ fi
+}
+
+src_compile() {
+ emake
+ use doc && emake -C doc
+}
+
+src_test() {
+ common-lisp-export-impl-args "$(common-lisp-find-lisp-impl)"
+ test/run-tests.sh ${CL_BINARY}
+}
+
+src_install() {
+ insinto "${CLSOURCEROOT}/${PN}"
+ doins -r build version.lisp-expr
+ dodoc README.md TODO
+ use doc && install_docs
+ insinto /etc/common-lisp
+ cd "${T}" || die
+ cp "${FILESDIR}/gentoo-init.lisp" "${FILESDIR}/source-registry.conf" . || die
+ eprefixify gentoo-init.lisp source-registry.conf
+ doins gentoo-init.lisp source-registry.conf
+}
diff --git a/dev-lisp/asdf/asdf-3.3.2-r1.ebuild b/dev-lisp/asdf/asdf-3.3.2-r1.ebuild
new file mode 100644
index 000000000000..20b72a58ce0f
--- /dev/null
+++ b/dev-lisp/asdf/asdf-3.3.2-r1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils prefix common-lisp-3
+
+DESCRIPTION="ASDF is Another System Definition Facility for Common Lisp"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/${PN}/archives/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PVR}"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="doc test"
+RESTRICT="!test? ( test )"
+
+DEPEND="!dev-lisp/cl-${PN}
+ !<dev-lisp/asdf-2.33-r3
+ doc? ( virtual/texi2dvi )
+ test? ( virtual/commonlisp )"
+PDEPEND="virtual/commonlisp
+ ~dev-lisp/uiop-${PV}"
+
+install_docs() {
+ (cd doc ; dodoc *.{html,css,ico,png} "${PN}.pdf" ; dodoc -r asdf )
+ if has_version ">=dev-lisp/sbcl-1.4.0" ; then
+ (cd doc ; doinfo "${PN}.info" )
+ fi
+}
+
+src_compile() {
+ emake
+ use doc && emake -C doc
+}
+
+src_test() {
+ common-lisp-export-impl-args "$(common-lisp-find-lisp-impl)"
+ test/run-tests.sh ${CL_BINARY}
+}
+
+src_install() {
+ insinto "${CLSOURCEROOT}/${PN}"
+ doins -r build version.lisp-expr
+ dodoc README.md TODO
+ use doc && install_docs
+ insinto /etc/common-lisp
+ cd "${T}" || die
+ cp "${FILESDIR}/gentoo-init.lisp" "${FILESDIR}/source-registry.conf" . || die
+ eprefixify gentoo-init.lisp source-registry.conf
+ doins gentoo-init.lisp source-registry.conf
+}
diff --git a/dev-lisp/asdf/asdf-3.3.2.ebuild b/dev-lisp/asdf/asdf-3.3.2.ebuild
new file mode 100644
index 000000000000..24b35b0d2403
--- /dev/null
+++ b/dev-lisp/asdf/asdf-3.3.2.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils prefix common-lisp-3
+
+DESCRIPTION="ASDF is Another System Definition Facility for Common Lisp"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/${PN}/archives/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PVR}"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="doc"
+
+DEPEND="!dev-lisp/cl-${PN}
+ !<dev-lisp/asdf-2.33-r3
+ doc? ( virtual/texi2dvi )"
+PDEPEND="virtual/commonlisp
+ ~dev-lisp/uiop-${PV}"
+
+install_docs() {
+ (cd doc ; dodoc *.{html,css,ico,png} "${PN}.pdf" ; dodoc -r asdf )
+ if has_version ">=dev-lisp/sbcl-1.4.0" ; then
+ (cd doc ; doinfo "${PN}.info" )
+ fi
+}
+
+src_compile() {
+ emake
+ use doc && emake -C doc
+}
+
+src_test() {
+ common-lisp-export-impl-args "$(common-lisp-find-lisp-impl)"
+ test/run-tests.sh ${CL_BINARY}
+}
+
+src_install() {
+ insinto "${CLSOURCEROOT}/${PN}"
+ doins -r build version.lisp-expr
+ dodoc README.md TODO
+ use doc && install_docs
+ insinto /etc/common-lisp
+ cd "${T}" || die
+ cp "${FILESDIR}/gentoo-init.lisp" "${FILESDIR}/source-registry.conf" . || die
+ eprefixify gentoo-init.lisp source-registry.conf
+ doins gentoo-init.lisp source-registry.conf
+}
diff --git a/dev-lisp/asdf/files/gentoo-init.lisp b/dev-lisp/asdf/files/gentoo-init.lisp
new file mode 100644
index 000000000000..1a855466a23a
--- /dev/null
+++ b/dev-lisp/asdf/files/gentoo-init.lisp
@@ -0,0 +1,12 @@
+(in-package #:cl-user)
+
+#-(or cmu ccl ecl sbcl)
+(let ((*compile-print* nil)
+ (*compile-verbose* nil)
+ #+cmu (ext:*gc-verbose* nil))
+ (handler-bind ((warning #'muffle-warning))
+ (load #p"@GENTOO_PORTAGE_EPREFIX@/usr/share/common-lisp/source/asdf/build/asdf.lisp"
+ :print nil :verbose nil)))
+
+#+(or cmu ccl ecl sbcl)
+(require :asdf)
diff --git a/dev-lisp/asdf/files/source-registry.conf b/dev-lisp/asdf/files/source-registry.conf
new file mode 100644
index 000000000000..d8cfd7146df9
--- /dev/null
+++ b/dev-lisp/asdf/files/source-registry.conf
@@ -0,0 +1,5 @@
+;; -*- Mode: Lisp; -*-
+
+(:source-registry
+ (:directory "@GENTOO_PORTAGE_EPREFIX@/usr/share/common-lisp/systems")
+ :inherit-configuration)
diff --git a/dev-lisp/asdf/metadata.xml b/dev-lisp/asdf/metadata.xml
new file mode 100644
index 000000000000..136dc046ea75
--- /dev/null
+++ b/dev-lisp/asdf/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+</maintainer>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/c2ffi/Manifest b/dev-lisp/c2ffi/Manifest
new file mode 100644
index 000000000000..03b798a30b3a
--- /dev/null
+++ b/dev-lisp/c2ffi/Manifest
@@ -0,0 +1 @@
+DIST c2ffi-9.0.0.20191017.tar.gz 35139 BLAKE2B a080f2cf7743aab630365fd305c106ada0318afb24093508c7667d8d702ec8dfd95a0ea9f54233a3a4b4c9b411e2f4aba5dacf7b2f35f1545b7ca63e765a7e55 SHA512 7a4743d89f431fd9ca42808358bdde03bbd85fc56f3350fddc94532c524ce373989671e706fadeb03eb240a81fb3f418176169acbf3ccd0f0f0c595d0f697832
diff --git a/dev-lisp/c2ffi/c2ffi-9.0.0.20191017.ebuild b/dev-lisp/c2ffi/c2ffi-9.0.0.20191017.ebuild
new file mode 100644
index 000000000000..53c06c021779
--- /dev/null
+++ b/dev-lisp/c2ffi/c2ffi-9.0.0.20191017.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2019-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake llvm
+
+MY_COMMIT="15fda06de0bad97bf91f5590f7f24623eab2f580"
+
+DESCRIPTION="Clang-based FFI wrapper generator for Common Lisp"
+HOMEPAGE="https://github.com/rpav/c2ffi"
+SRC_URI="https://github.com/rpav/c2ffi/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+DEPEND="sys-devel/clang:9=
+ sys-devel/llvm:9=
+"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/c2ffi-${MY_COMMIT}"
+
+PATCHES=( "${FILESDIR}"/${PN}-9.0.0.20191017-fix-lib-location.patch )
diff --git a/dev-lisp/c2ffi/c2ffi-9.0.0.9999.ebuild b/dev-lisp/c2ffi/c2ffi-9.0.0.9999.ebuild
new file mode 100644
index 000000000000..6a2256dee41f
--- /dev/null
+++ b/dev-lisp/c2ffi/c2ffi-9.0.0.9999.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2019-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake git-r3 llvm
+
+DESCRIPTION="Clang-based FFI wrapper generator for Common Lisp"
+HOMEPAGE="https://github.com/rpav/c2ffi"
+EGIT_REPO_URI="https://github.com/rpav/c2ffi.git"
+EGIT_BRANCH="llvm-9.0.0"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+IUSE=""
+
+DEPEND="sys-devel/clang:9=
+ sys-devel/llvm:9=
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}"/${PN}-9.0.0.20191017-fix-lib-location.patch )
diff --git a/dev-lisp/c2ffi/files/c2ffi-9.0.0.20191017-fix-lib-location.patch b/dev-lisp/c2ffi/files/c2ffi-9.0.0.20191017-fix-lib-location.patch
new file mode 100644
index 000000000000..8b09b25aa739
--- /dev/null
+++ b/dev-lisp/c2ffi/files/c2ffi-9.0.0.20191017-fix-lib-location.patch
@@ -0,0 +1,49 @@
+From 3a496f89064de85af04ce101918c2ec5cebf7846 Mon Sep 17 00:00:00 2001
+From: Harald Judt <h.judt@gmx.at>
+Date: Fri, 8 Nov 2019 10:35:02 +0100
+Subject: Fix CLANG and LLVM libraries not found
+
+This commit gets the build working again here on Gentoo.
+
+Adding LLVM_LIBRARY_DIRS fixes the CLANG libs not found error.
+
+Adding llvm_map_components_to_libnames fixes LLMV not found error.
+---
+ CMakeLists.txt | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 99dbe4b..f93b9b3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,6 +39,15 @@ target_include_directories(c2ffi PUBLIC
+ ${LLVM_INCLUDE_DIRS}
+ ${SOURCE_ROOT}/src/include
+ )
++target_link_directories(c2ffi PUBLIC
++ ${LLVM_LIBRARY_DIRS}
++)
++message(STATUS "LLVM_LIBRARY_DIRS=${LLVM_LIBRARY_DIRS}")
++
++llvm_map_components_to_libnames(llvm_libs core support mcparser bitreader profiledata)
++
++message(STATUS "llvm_libs=${llvm_libs}")
++
+ target_link_libraries(c2ffi PUBLIC
+ clangFrontendTool
+ clangFrontend
+@@ -64,10 +73,9 @@ target_link_libraries(c2ffi PUBLIC
+ clangIndex
+ clangToolingCore
+ clangTooling
++ ${llvm_libs}
+ )
+
+-llvm_config(c2ffi USE_SHARED core support mcparser bitreader profiledata)
+-
+ set(APP_BIN_DIR "${CMAKE_BINARY_DIR}/bin")
+ set_target_properties(c2ffi PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY "${APP_BIN_DIR}"
+--
+2.23.0
+
diff --git a/dev-lisp/c2ffi/metadata.xml b/dev-lisp/c2ffi/metadata.xml
new file mode 100644
index 000000000000..a50e592c33ff
--- /dev/null
+++ b/dev-lisp/c2ffi/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+ <email>h.judt@gmx.at</email>
+ <name>Harald Judt</name>
+</maintainer>
+<maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+</maintainer>
+<upstream>
+ <remote-id type="github">rpav/c2ffi</remote-id>
+</upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/cl-ppcre-unicode/Manifest b/dev-lisp/cl-ppcre-unicode/Manifest
new file mode 100644
index 000000000000..2ace7fade36c
--- /dev/null
+++ b/dev-lisp/cl-ppcre-unicode/Manifest
@@ -0,0 +1,2 @@
+DIST cl-ppcre-2.0.11.tar.gz 158418 BLAKE2B d65aa1a565dbe6c9d10e4dafe323ab1332929e46e00ea2e9775ad940ed5ac983520c0e423daa17bf0173420d2269b5af2fd9b52f8d3dbcb0c778e03e61ef052d SHA512 c693c568065c0571e5509599018e58951425a857cec3793312af0d22e248e32233f924eafc8ba67fbedad38cb3f4efa11343b785b073eaac53c31871422488b1
+DIST cl-ppcre-2.1.0.tar.gz 159051 BLAKE2B d1b9dd93c3f4c4c3a23a7c01f28cc4a8cc8543bfa3280f60b53d61dadb377f9e45c0f79592323bb7dcaf06721d899159f958f5b7d391370eeb5c6ede81a7a0cd SHA512 c9c95c58628fd5ecebf6e24e0c26913719360c325e90e78c256d1306eb8c2cbe85a2a5f617fdb6c2a7091bd80f4021ad0d294371b2696ad8e5873eca13aab866
diff --git a/dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.0.11.ebuild b/dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.0.11.ebuild
new file mode 100644
index 000000000000..34ef1cfdf678
--- /dev/null
+++ b/dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.0.11.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="CL-PPCRE is a portable regular expression library for Common Lisp."
+HOMEPAGE="http://weitz.de/cl-ppcre/
+ http://www.cliki.net/cl-ppcre"
+SRC_URI="https://github.com/edicl/cl-ppcre/archive/v${PV}.tar.gz -> cl-ppcre-${PV}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE=""
+
+RDEPEND="=dev-lisp/cl-ppcre-${PV}
+ dev-lisp/cl-unicode"
+
+S="${WORKDIR}/cl-ppcre-${PV}"
+
+src_install() {
+ common-lisp-install-sources ${PN}/ test/unicode*
+ common-lisp-install-asdf ${PN}
+}
diff --git a/dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.1.0.ebuild b/dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.1.0.ebuild
new file mode 100644
index 000000000000..8203612b0edc
--- /dev/null
+++ b/dev-lisp/cl-ppcre-unicode/cl-ppcre-unicode-2.1.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="CL-PPCRE is a portable regular expression library for Common Lisp."
+HOMEPAGE="http://weitz.de/cl-ppcre/
+ http://www.cliki.net/cl-ppcre"
+SRC_URI="https://github.com/edicl/cl-ppcre/archive/v${PV}.tar.gz -> cl-ppcre-${PV}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE=""
+
+RDEPEND="=dev-lisp/cl-ppcre-${PV}
+ dev-lisp/cl-unicode"
+
+S="${WORKDIR}/cl-ppcre-${PV}"
+
+src_install() {
+ common-lisp-install-sources ${PN}/ test/unicode*
+ common-lisp-install-asdf ${PN}
+}
diff --git a/dev-lisp/cl-ppcre-unicode/metadata.xml b/dev-lisp/cl-ppcre-unicode/metadata.xml
new file mode 100644
index 000000000000..6c30121d9ccc
--- /dev/null
+++ b/dev-lisp/cl-ppcre-unicode/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription>
+ CL-PPCRE is a portable regular expression library for Common Lisp
+ which has the following features:
+
+ * compatible with Perl
+ * fast (outperforms Perl)
+ * portable (ANSI Common Lisp)
+ * thread-safe
+ * includes convenience features
+ * well-documented.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">edicl/cl-ppcre</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/cl-ppcre/Manifest b/dev-lisp/cl-ppcre/Manifest
new file mode 100644
index 000000000000..2ace7fade36c
--- /dev/null
+++ b/dev-lisp/cl-ppcre/Manifest
@@ -0,0 +1,2 @@
+DIST cl-ppcre-2.0.11.tar.gz 158418 BLAKE2B d65aa1a565dbe6c9d10e4dafe323ab1332929e46e00ea2e9775ad940ed5ac983520c0e423daa17bf0173420d2269b5af2fd9b52f8d3dbcb0c778e03e61ef052d SHA512 c693c568065c0571e5509599018e58951425a857cec3793312af0d22e248e32233f924eafc8ba67fbedad38cb3f4efa11343b785b073eaac53c31871422488b1
+DIST cl-ppcre-2.1.0.tar.gz 159051 BLAKE2B d1b9dd93c3f4c4c3a23a7c01f28cc4a8cc8543bfa3280f60b53d61dadb377f9e45c0f79592323bb7dcaf06721d899159f958f5b7d391370eeb5c6ede81a7a0cd SHA512 c9c95c58628fd5ecebf6e24e0c26913719360c325e90e78c256d1306eb8c2cbe85a2a5f617fdb6c2a7091bd80f4021ad0d294371b2696ad8e5873eca13aab866
diff --git a/dev-lisp/cl-ppcre/cl-ppcre-2.0.11.ebuild b/dev-lisp/cl-ppcre/cl-ppcre-2.0.11.ebuild
new file mode 100644
index 000000000000..df216d535ff0
--- /dev/null
+++ b/dev-lisp/cl-ppcre/cl-ppcre-2.0.11.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="CL-PPCRE is a portable regular expression library for Common Lisp."
+HOMEPAGE="http://weitz.de/cl-ppcre/
+ http://www.cliki.net/cl-ppcre"
+SRC_URI="https://github.com/edicl/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE=""
+
+RDEPEND="dev-lisp/flexi-streams"
+PDEPEND="dev-lisp/cl-ppcre-unicode"
+
+src_unpack() {
+ unpack ${A} && cd "${S}"
+ rm -rf cl-ppcre-unicode test/unicode*
+}
+
+src_install() {
+ common-lisp-install-sources *.lisp test/
+ common-lisp-install-asdf ${PN}
+ dodoc CHANGELOG doc/index.html
+}
diff --git a/dev-lisp/cl-ppcre/cl-ppcre-2.1.0.ebuild b/dev-lisp/cl-ppcre/cl-ppcre-2.1.0.ebuild
new file mode 100644
index 000000000000..70c99953770f
--- /dev/null
+++ b/dev-lisp/cl-ppcre/cl-ppcre-2.1.0.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="CL-PPCRE is a portable regular expression library for Common Lisp."
+HOMEPAGE="http://weitz.de/cl-ppcre/
+ http://www.cliki.net/cl-ppcre"
+SRC_URI="https://github.com/edicl/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE=""
+
+RDEPEND="dev-lisp/flexi-streams"
+PDEPEND="dev-lisp/cl-ppcre-unicode"
+
+src_unpack() {
+ unpack ${A} && cd "${S}"
+ rm -rf cl-ppcre-unicode test/unicode*
+}
+
+src_install() {
+ common-lisp-install-sources *.lisp test/
+ common-lisp-install-asdf ${PN}
+ dodoc CHANGELOG docs/index.html
+}
diff --git a/dev-lisp/cl-ppcre/metadata.xml b/dev-lisp/cl-ppcre/metadata.xml
new file mode 100644
index 000000000000..9221c9646ae0
--- /dev/null
+++ b/dev-lisp/cl-ppcre/metadata.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ CL-PPCRE is a portable regular expression library for Common Lisp
+ which has the following features:
+
+ * compatible with Perl
+ * fast (outperforms Perl)
+ * portable (ANSI Common Lisp)
+ * thread-safe
+ * includes convenience features
+ * well-documented
+ </longdescription>
+ <longdescription lang="es">
+ CL-PPCRE es una biblioteca de expressiones regulares portable
+ para Common Lisp que tiene las siguientes características:
+
+ * Compatible con Perl
+ * Rápida (más rápida que la versión para Perl)
+ * Portable (ANSI Common Lisp)
+ * Segura en la ejecución de hilos (thread-safe)
+ * Incluye características para hacerla cómoda
+ * Bien documentada
+ </longdescription>
+ <upstream>
+ <remote-id type="github">edicl/cl-ppcre</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/cl-unicode/Manifest b/dev-lisp/cl-unicode/Manifest
new file mode 100644
index 000000000000..e73222844aa1
--- /dev/null
+++ b/dev-lisp/cl-unicode/Manifest
@@ -0,0 +1 @@
+DIST cl-unicode-0.1.5.tar.gz 485666 BLAKE2B 9db0714c24de4c5c79f3d7eeb471ac5d7a06dd29abd1c3c4b728c9ce98b175ea97ed20923c957a75ac7dee290f095a5c28c92da5ddc7e808d28ca624d84a37cd SHA512 0b66c0e711f7e37423aa638b43017adff648189a32032702b082dff140b2255847a15572a20f21e6f82a2e8cbd547f7f99bf9176e4fa464aa1d938575d8a2390
diff --git a/dev-lisp/cl-unicode/cl-unicode-0.1.5.ebuild b/dev-lisp/cl-unicode/cl-unicode-0.1.5.ebuild
new file mode 100644
index 000000000000..bff440548364
--- /dev/null
+++ b/dev-lisp/cl-unicode/cl-unicode-0.1.5.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3 xdg-utils
+
+MY_P="v${PV}"
+
+DESCRIPTION="Provides Common Lisp implementations with knowledge about Unicode characters."
+HOMEPAGE="http://weitz.de/cl-unicode/"
+SRC_URI="https://github.com/edicl/${PN}/archive/${MY_P}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE=""
+
+DEPEND="virtual/commonlisp
+ dev-lisp/flexi-streams"
+RDEPEND="dev-lisp/cl-ppcre"
+
+src_configure() {
+ xdg_environment_reset
+}
+
+src_compile() {
+ # cl-unicode builds parts of its source code automatically the first time it
+ # is compiled, so we compile it here.
+ local initclunicode="(progn (push \"${S}/\" asdf:*central-registry*) (require :${PN}))"
+
+ common-lisp-export-impl-args "$(common-lisp-find-lisp-impl)"
+ ${CL_BINARY} ${CL_EVAL} "${initclunicode}"
+}
+
+src_install() {
+ common-lisp-install-sources *.lisp test/
+ common-lisp-install-sources -t all build/
+ common-lisp-install-asdf
+ dodoc CHANGELOG
+ dodoc doc/index.html
+}
diff --git a/dev-lisp/cl-unicode/metadata.xml b/dev-lisp/cl-unicode/metadata.xml
new file mode 100644
index 000000000000..c9dbeee68620
--- /dev/null
+++ b/dev-lisp/cl-unicode/metadata.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ CL-UNICODE is a library which provides Common Lisp implementations
+ with knowledge about Unicode characters including their name, their
+ general category, the scripts and blocks they belong to, their
+ numerical value, and several other properties. It also provides the
+ ability to replace the standard syntax for reading Lisp characters
+ with one that is Unicode-aware and is used to enhance CL-PPCRE with
+ Unicode properties.
+ </longdescription>
+ <longdescription lang="es">
+ CL-UNICODE es una biblioteca que ofrece implmentaciones de Common
+ Lisp que reconoce caracteres Unicode incluyendo su nombre, categoría
+ general, los guiones y bloques a los que pertenecen, su valor
+ numérico y algunas otras propiedades. También ofrece la capacidad
+ de reemplazar la sintaxis estándar para la lectura de caracteres
+ Lisp por otra que reconoce Unicode y se utiliza para mejorar
+ CL-PPCRE con propiedades Unicode.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">edicl/cl-unicode</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/clisp/Manifest b/dev-lisp/clisp/Manifest
new file mode 100644
index 000000000000..84d215a48e08
--- /dev/null
+++ b/dev-lisp/clisp/Manifest
@@ -0,0 +1,3 @@
+DIST clisp-2.49.90.tar.bz2 8921458 BLAKE2B 3be7cfe41038f42d8844d500877fa5c20e5c21dc0e162aa0018b297e4dfcd5374ef608793c9d809852e1f9885a155bb5b25fef8efe66016dd0ee400007386b70 SHA512 1fa7205e38883dcc863160b5418ddaaa2c45ee2d2f936de4067d1ea4a1e5043bf1235361bbbfc366afd6d8f1144497ccdccf1767ecf327f7a672b18742ceb651
+DIST clisp-2.49.92.tar.bz2 9055207 BLAKE2B 6cf331eb9f99f62579e35469e2d01cae066083592ccc71cf483b70b4d1be349cdee9d403e0a7ed1ad1c8c5d805c1dab51c1a5031d77469ff8c4dc52eb58913df SHA512 cc9412a7b3f21c85b040bf5e660380fafb3c2374765a1c00272feb3f7838f2161e27a5d6295cef9976f0c4522f10796cf5ee5447716090d1cc69ecfe598ef306
+DIST clisp-2.49.tar.bz2 8091011 BLAKE2B e034c581b8100837b34d0adf1ef45bd667272d062945875175958178b4ef5b11e899dfb76505eb8cb51fca6101c11a9f21fb2cc9a78a3c0f82b06166211434f7 SHA512 eef66fc85199a2c283b616db61bf67ff103eeb0f19fa907da48994dc790b6f5f8d0c74fb3bd723c6b827c0ff3cfd89fa6ba67934fc669ed5d5249044b5140d81
diff --git a/dev-lisp/clisp/clisp-2.49-r9.ebuild b/dev-lisp/clisp/clisp-2.49-r9.ebuild
new file mode 100644
index 000000000000..b1cf33182eed
--- /dev/null
+++ b/dev-lisp/clisp/clisp-2.49-r9.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+inherit eutils flag-o-matic multilib toolchain-funcs xdg-utils
+
+DESCRIPTION="A portable, bytecode-compiled implementation of Common Lisp"
+HOMEPAGE="https://clisp.sourceforge.io/"
+SRC_URI="mirror://sourceforge/clisp/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="2/${PV}"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE="hyperspec X berkdb dbus fastcgi gdbm gtk +pcre postgres +readline svm -threads +unicode +zlib"
+# "jit" disabled ATM
+
+RDEPEND=">=dev-lisp/asdf-2.33-r3
+ virtual/libiconv
+ >=dev-libs/libsigsegv-2.4
+ >=dev-libs/ffcall-1.10
+ dbus? ( sys-apps/dbus )
+ fastcgi? ( dev-libs/fcgi )
+ gdbm? ( sys-libs/gdbm )
+ gtk? ( >=x11-libs/gtk+-2.10 >=gnome-base/libglade-2.6 )
+ postgres? ( >=dev-db/postgresql-8.0 )
+ readline? ( >=sys-libs/readline-5.0 <sys-libs/readline-7.0 )
+ pcre? ( dev-libs/libpcre )
+ svm? ( sci-libs/libsvm )
+ zlib? ( sys-libs/zlib )
+ X? ( x11-libs/libXpm )
+ hyperspec? ( dev-lisp/hyperspec )
+ berkdb? ( sys-libs/db:4.8 )"
+# jit? ( >=dev-libs/lightning-1.2 )
+
+DEPEND="${RDEPEND}
+ X? ( x11-base/xorg-proto x11-misc/imake )"
+
+enable_modules() {
+ [[ $# = 0 ]] && die "${FUNCNAME[0]} must receive at least one argument"
+ for m in "$@" ; do
+ einfo "enabling module $m"
+ myconf+=" --with-module=${m}"
+ done
+}
+
+BUILDDIR="builddir"
+
+# modules not enabled:
+# * berkdb: must figure out a way to make the configure script pick up the
+# currect version of the library and headers
+# * dirkey: fails to compile, requiring windows.h, possibly wrong #ifdefs
+# * matlab, netica: not in portage
+# * oracle: can't install oracle-instantclient
+
+src_prepare() {
+ # More than -O1 breaks alpha/ia64
+ if use alpha || use ia64; then
+ sed -i -e 's/-O2//g' src/makemake.in || die
+ fi
+ epatch "${FILESDIR}"/${P}-bits_ipctypes_to_sys_ipc.patch
+ epatch "${FILESDIR}"/${P}-get_hostname.patch
+ epatch "${FILESDIR}"/${P}-tinfo.patch
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # Bug 618170. If anyone has a better idea...
+ append-flags -fno-pie
+
+ # We need this to build on alpha/ia64
+ if use alpha || use ia64; then
+ replace-flags -O? -O1
+ append-flags '-D NO_MULTIMAP_SHM -D NO_MULTIMAP_FILE -D NO_SINGLEMAP -D NO_TRIVIALMAP'
+ fi
+
+ # QA issue with lisp.run
+ append-flags -Wa,--noexecstack
+
+ # built-in features
+ local myconf="--with-ffcall --without-dynamic-modules"
+# There's a problem with jit_allocai function
+# if use jit; then
+# myconf+=" --with-jitc=lightning"
+# fi
+ if use threads; then
+ myconf+=" --with-threads=POSIX_THREADS"
+ fi
+
+ # default modules
+ enable_modules wildcard rawsock
+ # optional modules
+ use elibc_glibc && enable_modules bindings/glibc
+ use X && enable_modules clx/new-clx
+ if use postgres; then
+ enable_modules postgresql
+ append-cppflags -I$(pg_config --includedir)
+ fi
+ if use berkdb; then
+ enable_modules berkeley-db
+ append-cppflags -I/usr/include/db4.8
+ fi
+ use dbus && enable_modules dbus
+ use fastcgi && enable_modules fastcgi
+ use gdbm && enable_modules gdbm
+ use gtk && enable_modules gtk2
+ use pcre && enable_modules pcre
+ use svm && enable_modules libsvm
+ use zlib && enable_modules zlib
+
+ if use hyperspec; then
+ CLHSROOT="file:///usr/share/doc/hyperspec/HyperSpec/"
+ else
+ CLHSROOT="http://www.lispworks.com/reference/HyperSpec/"
+ fi
+
+ # configure chokes on --sysconfdir option
+ local configure="./configure --prefix=/usr --libdir=/usr/$(get_libdir) \
+ $(use_with readline) $(use_with unicode) \
+ ${myconf} --hyperspec=${CLHSROOT} ${BUILDDIR}"
+ einfo "${configure}"
+ ${configure} || die "./configure failed"
+
+ IMPNOTES="file://${ROOT%/}/usr/share/doc/${PN}-${PVR}/html/impnotes.html"
+ sed -i "s,http://clisp.cons.org/impnotes/,${IMPNOTES},g" \
+ "${BUILDDIR}"/config.lisp || die "Cannot fix link to implementation notes"
+}
+
+src_compile() {
+ export VARTEXFONTS="${T}"/fonts
+ cd "${BUILDDIR}"
+ # parallel build fails
+ emake -j1
+}
+
+src_install() {
+ pushd "${BUILDDIR}"
+ make DESTDIR="${D}" prefix=/usr install-bin || die "Installation failed"
+ doman clisp.1
+ dodoc ../SUMMARY README* ../src/NEWS ../unix/MAGIC.add ../ANNOUNCE
+ popd
+ dohtml doc/impnotes.{css,html} doc/regexp.html doc/clisp.png
+ dodoc doc/{CLOS-guide,LISP-tutorial}.txt
+}
diff --git a/dev-lisp/clisp/clisp-2.49.90.ebuild b/dev-lisp/clisp/clisp-2.49.90.ebuild
new file mode 100644
index 000000000000..660b5a4acdd1
--- /dev/null
+++ b/dev-lisp/clisp/clisp-2.49.90.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils flag-o-matic multilib toolchain-funcs xdg-utils
+
+DESCRIPTION="A portable, bytecode-compiled implementation of Common Lisp"
+HOMEPAGE="https://clisp.sourceforge.io/"
+SRC_URI="https://haible.de/bruno/gnu/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="2/8"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~sparc ~x86"
+IUSE="hyperspec X berkdb dbus fastcgi gdbm gtk +pcre postgres +readline svm -threads +unicode +zlib"
+# "jit" disabled ATM
+
+RDEPEND=">=dev-lisp/asdf-2.33-r3
+ virtual/libiconv
+ >=dev-libs/libsigsegv-2.10
+ >=dev-libs/ffcall-1.10
+ dbus? ( sys-apps/dbus )
+ fastcgi? ( dev-libs/fcgi )
+ gdbm? ( sys-libs/gdbm )
+ gtk? ( >=x11-libs/gtk+-2.10:2 >=gnome-base/libglade-2.6 )
+ postgres? ( >=dev-db/postgresql-8.0:* )
+ readline? ( >=sys-libs/readline-7.0:0= )
+ pcre? ( dev-libs/libpcre:3 )
+ svm? ( sci-libs/libsvm )
+ zlib? ( sys-libs/zlib )
+ X? ( x11-libs/libXpm )
+ hyperspec? ( dev-lisp/hyperspec )
+ berkdb? ( sys-libs/db:4.8 )"
+
+DEPEND="${RDEPEND}
+ X? ( x11-base/xorg-proto x11-misc/imake )"
+
+enable_modules() {
+ [[ $# = 0 ]] && die "${FUNCNAME[0]} must receive at least one argument"
+ for m in "$@" ; do
+ einfo "enabling module $m"
+ myconf+=" --with-module=${m}"
+ done
+}
+
+BUILDDIR="builddir"
+
+# modules not enabled:
+# * berkdb: must figure out a way to make the configure script pick up the
+# currect version of the library and headers
+# * dirkey: fails to compile, requiring windows.h, possibly wrong #ifdefs
+# * matlab, netica: not in portage
+# * oracle: can't install oracle-instantclient
+
+src_prepare() {
+ # More than -O1 breaks alpha/ia64
+ if use alpha || use ia64; then
+ sed -i -e 's/-O2//g' src/makemake.in || die
+ fi
+ eapply "${FILESDIR}"/"${P}"-after_glibc_cfree_bdb.patch
+ eapply_user
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # We need this to build on alpha/ia64
+ if use alpha || use ia64; then
+ replace-flags -O? -O1
+ fi
+
+ if use x86; then
+ append-flags -falign-functions=4
+ fi
+
+ # built-in features
+ local myconf="--with-ffcall --without-dynamic-modules"
+# There's a problem with jit_allocai function
+# if use jit; then
+# myconf+=" --with-jitc=lightning"
+# fi
+ if use threads; then
+ myconf+=" --with-threads=POSIX_THREADS"
+ fi
+
+ # default modules
+ enable_modules rawsock
+ # optional modules
+ use elibc_glibc && enable_modules bindings/glibc
+ use X && enable_modules clx/new-clx
+ if use postgres; then
+ enable_modules postgresql
+ append-cppflags -I$(pg_config --includedir)
+ fi
+ if use berkdb; then
+ enable_modules berkeley-db
+ append-cppflags -I"${EPREFIX}"/usr/include/db4.8
+ fi
+ use dbus && enable_modules dbus
+ use fastcgi && enable_modules fastcgi
+ use gdbm && enable_modules gdbm
+ use gtk && enable_modules gtk2
+ use pcre && enable_modules pcre
+ use svm && enable_modules libsvm
+ use zlib && enable_modules zlib
+
+ if use hyperspec; then
+ CLHSROOT="file:///${EPREFIX}/usr/share/doc/hyperspec/HyperSpec/"
+ else
+ CLHSROOT="http://www.lispworks.com/reference/HyperSpec/"
+ fi
+
+ # configure chokes on --sysconfdir option
+ local configure="./configure --prefix=${EPREFIX}/usr --enable-portability \
+ --libdir=${EPREFIX}/usr/$(get_libdir) $(use_with readline) $(use_with unicode) \
+ ${myconf} --hyperspec=${CLHSROOT} ${BUILDDIR}"
+ einfo "${configure}"
+ ${configure} || die "./configure failed"
+
+ IMPNOTES="file://${ROOT%/}/usr/share/doc/${PN}-${PVR}/html/impnotes.html"
+ sed -i "s,http://clisp.cons.org/impnotes/,${IMPNOTES},g" \
+ "${BUILDDIR}"/config.lisp || die "Cannot fix link to implementation notes"
+}
+
+src_compile() {
+ export VARTEXFONTS="${T}"/fonts
+ cd "${BUILDDIR}" || die
+ # parallel build fails
+ emake -j1
+}
+
+src_install() {
+ pushd "${BUILDDIR}"
+ make DESTDIR="${D}" prefix="${EPREFIX}"/usr install-bin || die "Installation failed"
+ doman clisp.1
+ dodoc ../SUMMARY README* ../src/NEWS ../unix/MAGIC.add ../ANNOUNCE
+ popd
+ dohtml doc/impnotes.{css,html} doc/regexp.html doc/clisp.png
+ dodoc doc/{CLOS-guide,LISP-tutorial}.txt
+}
diff --git a/dev-lisp/clisp/clisp-2.49.92.ebuild b/dev-lisp/clisp/clisp-2.49.92.ebuild
new file mode 100644
index 000000000000..bd144974f803
--- /dev/null
+++ b/dev-lisp/clisp/clisp-2.49.92.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils flag-o-matic multilib toolchain-funcs xdg-utils
+
+DESCRIPTION="A portable, bytecode-compiled implementation of Common Lisp"
+HOMEPAGE="https://clisp.sourceforge.io/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="2/8"
+KEYWORDS="~alpha amd64 ~ia64 ppc ~sparc x86"
+IUSE="hyperspec X berkdb dbus fastcgi gdbm gtk +pcre postgres +readline svm -threads +unicode +zlib"
+# "jit" disabled ATM
+
+RDEPEND=">=dev-lisp/asdf-2.33-r3
+ virtual/libiconv
+ >=dev-libs/libsigsegv-2.10
+ >=dev-libs/ffcall-1.10
+ dbus? ( sys-apps/dbus )
+ fastcgi? ( dev-libs/fcgi )
+ gdbm? ( sys-libs/gdbm )
+ gtk? ( >=x11-libs/gtk+-2.10:2 >=gnome-base/libglade-2.6 )
+ postgres? ( >=dev-db/postgresql-8.0:* )
+ readline? ( >=sys-libs/readline-7.0:0= )
+ pcre? ( dev-libs/libpcre:3 )
+ svm? ( sci-libs/libsvm )
+ zlib? ( sys-libs/zlib )
+ X? ( x11-libs/libXpm )
+ hyperspec? ( dev-lisp/hyperspec )
+ berkdb? ( sys-libs/db:4.8 )"
+
+DEPEND="${RDEPEND}
+ X? ( x11-base/xorg-proto x11-misc/imake )"
+
+enable_modules() {
+ [[ $# = 0 ]] && die "${FUNCNAME[0]} must receive at least one argument"
+ for m in "$@" ; do
+ einfo "enabling module $m"
+ myconf+=" --with-module=${m}"
+ done
+}
+
+BUILDDIR="builddir"
+
+# modules not enabled:
+# * berkdb: must figure out a way to make the configure script pick up the
+# currect version of the library and headers
+# * dirkey: fails to compile, requiring windows.h, possibly wrong #ifdefs
+# * matlab, netica: not in portage
+# * oracle: can't install oracle-instantclient
+
+src_prepare() {
+ # More than -O1 breaks alpha/ia64
+ if use alpha || use ia64; then
+ sed -i -e 's/-O2//g' src/makemake.in || die
+ fi
+ eapply "${FILESDIR}"/"${P}"-after_glibc_cfree_bdb.patch
+ eapply_user
+
+ xdg_environment_reset
+}
+
+src_configure() {
+ # We need this to build on alpha/ia64
+ if use alpha || use ia64; then
+ replace-flags -O? -O1
+ fi
+
+ if use x86; then
+ append-flags -falign-functions=4
+ fi
+
+ # built-in features
+ local myconf="--with-ffcall --without-dynamic-modules"
+# There's a problem with jit_allocai function
+# if use jit; then
+# myconf+=" --with-jitc=lightning"
+# fi
+ if use threads; then
+ myconf+=" --with-threads=POSIX_THREADS"
+ fi
+
+ # default modules
+ enable_modules rawsock
+ # optional modules
+ use elibc_glibc && enable_modules bindings/glibc
+ use X && enable_modules clx/new-clx
+ if use postgres; then
+ enable_modules postgresql
+ append-cppflags -I$(pg_config --includedir)
+ fi
+ if use berkdb; then
+ enable_modules berkeley-db
+ append-cppflags -I"${EPREFIX}"/usr/include/db4.8
+ fi
+ use dbus && enable_modules dbus
+ use fastcgi && enable_modules fastcgi
+ use gdbm && enable_modules gdbm
+ use gtk && enable_modules gtk2
+ use pcre && enable_modules pcre
+ use svm && enable_modules libsvm
+ use zlib && enable_modules zlib
+
+ if use hyperspec; then
+ CLHSROOT="file:///${EPREFIX}/usr/share/doc/hyperspec/HyperSpec/"
+ else
+ CLHSROOT="http://www.lispworks.com/reference/HyperSpec/"
+ fi
+
+ # configure chokes on --sysconfdir option
+ local configure="./configure --prefix=${EPREFIX}/usr --enable-portability \
+ --libdir=${EPREFIX}/usr/$(get_libdir) $(use_with readline) $(use_with unicode) \
+ ${myconf} --hyperspec=${CLHSROOT} ${BUILDDIR}"
+ einfo "${configure}"
+ ${configure} || die "./configure failed"
+
+ IMPNOTES="file://${ROOT%/}/usr/share/doc/${PN}-${PVR}/html/impnotes.html"
+ sed -i "s,http://clisp.cons.org/impnotes/,${IMPNOTES},g" \
+ "${BUILDDIR}"/config.lisp || die "Cannot fix link to implementation notes"
+}
+
+src_compile() {
+ export VARTEXFONTS="${T}"/fonts
+ cd "${BUILDDIR}" || die
+ # parallel build fails
+ emake -j1
+}
+
+src_install() {
+ pushd "${BUILDDIR}"
+ make DESTDIR="${D}" prefix="${EPREFIX}"/usr install-bin || die "Installation failed"
+ doman clisp.1
+ dodoc ../SUMMARY README* ../src/NEWS ../unix/MAGIC.add ../ANNOUNCE
+ popd
+ dohtml doc/impnotes.{css,html} doc/regexp.html doc/clisp.png
+ dodoc doc/{CLOS-guide,LISP-tutorial}.txt
+}
diff --git a/dev-lisp/clisp/files/clisp-2.49-bits_ipctypes_to_sys_ipc.patch b/dev-lisp/clisp/files/clisp-2.49-bits_ipctypes_to_sys_ipc.patch
new file mode 100644
index 000000000000..8037157c9512
--- /dev/null
+++ b/dev-lisp/clisp/files/clisp-2.49-bits_ipctypes_to_sys_ipc.patch
@@ -0,0 +1,21 @@
+diff -ru a/modules/bindings/glibc/linux.lisp b/modules/bindings/glibc/linux.lisp
+--- a/modules/bindings/glibc/linux.lisp 2008-10-08 19:36:19.000000000 +0300
++++ b/modules/bindings/glibc/linux.lisp 2013-04-08 00:05:06.028305248 +0300
+@@ -67,7 +67,7 @@
+ (def-c-type __daddr_t) ; int
+ (def-c-type __caddr_t) ; c-pointer
+ (def-c-type __time_t) ; long
+-(def-c-type __swblk_t) ; long
++;(def-c-type __swblk_t) ; long
+
+ (def-c-type __fd_mask ulong)
+ (eval-when (load compile eval)
+@@ -86,7 +86,7 @@
+
+ (def-c-type __key_t) ; int
+
+-(c-lines "#include <bits/ipctypes.h>~%")
++(c-lines "#include <sys/ipc.h>~%")
+ (def-c-type __ipc_pid_t) ; ushort
+
+ ; --------------------------- <sys/types.h> -----------------------------------
diff --git a/dev-lisp/clisp/files/clisp-2.49-get_hostname.patch b/dev-lisp/clisp/files/clisp-2.49-get_hostname.patch
new file mode 100644
index 000000000000..5db3a71efbc3
--- /dev/null
+++ b/dev-lisp/clisp/files/clisp-2.49-get_hostname.patch
@@ -0,0 +1,56 @@
+diff -r -U1 clisp-2.49.orig/src/socket.d clisp-2.49/src/socket.d
+--- clisp-2.49.orig/src/socket.d 2009-10-08 21:45:13.000000000 +0700
++++ clisp-2.49/src/socket.d 2013-04-20 16:24:11.133895050 +0700
+@@ -59,5 +59,5 @@
+ Fetches the machine's host name.
+- get_hostname(host =);
+- The name is allocated on the stack, with dynamic extent.
+- < const char* host: The host name.
++ get_hostname(hostname);
++ where hostname is an array of MAXHOTNAMELEN+1 characters.
++ < const char host[]: The host name.
+ (Note: In some cases we could get away with less system calls by simply
+@@ -69,10 +69,8 @@
+ /* present on all supported unix systems and on woe32 */
+- #define get_hostname(host_assignment) \
+- do { var char hostname[MAXHOSTNAMELEN+1]; \
+- begin_system_call(); \
+- if ( gethostname(&hostname[0],MAXHOSTNAMELEN) <0) { SOCK_error(); } \
+- end_system_call(); \
+- hostname[MAXHOSTNAMELEN] = '\0'; \
+- host_assignment &hostname[0]; \
+- } while(0)
++static void get_hostname (char *hostname) {
++ begin_system_call();
++ if (gethostname(hostname,MAXHOSTNAMELEN) < 0) { ANSIC_error(); }
++ end_system_call();
++ hostname[MAXHOSTNAMELEN] = '\0';
++}
+ #else
+@@ -209,4 +207,4 @@
+ (apply #'string-concat hostname " [" (inet-ntop address) "]"))) */
+- var const char* host;
+- get_hostname(host =);
++ var char host[MAXHOSTNAMELEN+1];
++ get_hostname(host);
+ result = asciz_to_string(host,O(misc_encoding)); /* hostname as result */
+@@ -391,4 +389,4 @@
+ if (eq(arg,S(Kdefault))) {
+- var char* host;
+- get_hostname(host =);
++ var char host[MAXHOSTNAMELEN+1];
++ get_hostname(host);
+ begin_system_call();
+@@ -726,3 +724,4 @@
+ if (host[0] == '\0') {
+- get_hostname(host =);
++ var char host[MAXHOSTNAMELEN+1];
++ get_hostname(host);
+ fd = with_host_port(host,port,&connect_to_x_via_ip,NULL);
+@@ -800,4 +799,4 @@
+ if (resolve_p) { /* Fill in hd->truename. */
+- var const char* host;
+- get_hostname(host =); /* was: host = "localhost"; */
++ var char host[MAXHOSTNAMELEN+1];
++ get_hostname(host);
+ ASSERT(strlen(host) <= MAXHOSTNAMELEN);
diff --git a/dev-lisp/clisp/files/clisp-2.49-tinfo.patch b/dev-lisp/clisp/files/clisp-2.49-tinfo.patch
new file mode 100644
index 000000000000..72f40d585b5b
--- /dev/null
+++ b/dev-lisp/clisp/files/clisp-2.49-tinfo.patch
@@ -0,0 +1,15 @@
+clisp does not need a full blown ncurses, but it does require a termcap or tinfo
+I would have changed this in src/m4/termcap.m4 but configure.in fails terribly - JeR
+
+
+--- a/src/configure
++++ b/src/configure
+@@ -28613,7 +28613,7 @@
+ return 0;
+ }
+ _ACEOF
+-for ac_lib in '' ncurses termcap; do
++for ac_lib in '' tinfo ncurses termcap; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
diff --git a/dev-lisp/clisp/files/clisp-2.49.90-after_glibc_cfree_bdb.patch b/dev-lisp/clisp/files/clisp-2.49.90-after_glibc_cfree_bdb.patch
new file mode 100644
index 000000000000..ae83bbb8770d
--- /dev/null
+++ b/dev-lisp/clisp/files/clisp-2.49.90-after_glibc_cfree_bdb.patch
@@ -0,0 +1,185 @@
+diff -r -U3 clisp-2.49.90.orig/modules/berkeley-db/bdb.c clisp-2.49.90/modules/berkeley-db/bdb.c
+--- clisp-2.49.90.orig/modules/berkeley-db/bdb.c 2018-01-27 12:03:01.000000000 +0100
++++ clisp-2.49.90/modules/berkeley-db/bdb.c 2018-02-12 20:37:24.203803219 +0100
+@@ -2216,7 +2216,13 @@
+ c_data.compact_timeout = timeout;
+ c_data.compact_pages = pages;
+ SYSCALL(db->compact,(db,txn,pstart,pstop,&c_data,flags,&end));
+- pushSTACK(uint32_to_I(c_data.compact_empty_buckets));
++ /* ====
++ * compact_empty_buckets is in bdb-5.3 as part of output stats
++ * however this version use bdb-4.8 which does not have it
++ * ====
++ *
++ * pushSTACK(uint32_to_I(c_data.compact_empty_buckets));
++ * */
+ pushSTACK(uint32_to_I(c_data.compact_pages_free));
+ pushSTACK(uint32_to_I(c_data.compact_pages_examine));
+ pushSTACK(uint32_to_I(c_data.compact_levels));
+diff -r -U3 clisp-2.49.90.orig/modules/bindings/glibc/linux.lisp clisp-2.49.90/modules/bindings/glibc/linux.lisp
+--- clisp-2.49.90.orig/modules/bindings/glibc/linux.lisp 2018-01-10 00:32:25.000000000 +0100
++++ clisp-2.49.90/modules/bindings/glibc/linux.lisp 2018-02-12 20:48:22.467775536 +0100
+@@ -1,7 +1,7 @@
+ ;; Foreign functions provided by the Linux C library version 6,
+ ;; i.e. the GNU C library version 2.0.7.
+ ;; Bruno Haible 10.4.1998, 19.4.1998
+-;; Sam Steingold 2002-2008, 2011
++;; Sam Steingold 2002-2008, 2011, 2013, 2016-2017
+
+ ;; NB: quite a few functions here have more portable counterparts in POSIX
+
+@@ -686,9 +686,8 @@
+ (def-call-out system? (:arguments (null c-string))
+ (:return-type boolean) (:name "system"))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out canonicalize_file_name (:arguments (name c-string))
+-; (:return-type c-string :malloc-free))
++(def-call-out canonicalize_file_name (:arguments (name c-string))
++ (:return-type c-string :malloc-free))
+
+ (def-call-out realpath
+ (:arguments (name c-string)
+@@ -1040,9 +1039,8 @@
+ (def-call-out access (:arguments (name c-string) (type int))
+ (:return-type int))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out euidaccess (:arguments (name c-string) (type int))
+-; (:return-type int))
++(def-call-out euidaccess (:arguments (name c-string) (type int))
++ (:return-type int))
+
+ (defconstant SEEK_SET 0)
+ (defconstant SEEK_CUR 1)
+@@ -1093,9 +1091,8 @@
+ ;(def-call-out getcwd (:arguments (buf c-string :out) (size size_t)) ; ??
+ ; (:return-type c-string))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out get_current_dir_name (:arguments)
+-; (:return-type c-string :malloc-free))
++(def-call-out get_current_dir_name (:arguments)
++ (:return-type c-string :malloc-free))
+
+ ;(def-call-out getwd (:arguments (buf c-string :out)) ; ??
+ ; (:return-type c-string))
+@@ -1323,8 +1320,7 @@
+ ; (:arguments (size int) (list (c-ptr (c-array gid_t ??)) :out)) ; ??
+ ; (:return-type int))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out group_member (:arguments (gid gid_t)) (:return-type boolean))
++(def-call-out group_member (:arguments (gid gid_t)) (:return-type boolean))
+ (def-call-out setuid (:arguments (uid uid_t)) (:return-type int))
+ (def-call-out setreuid (:arguments (ruid uid_t) (euid uid_t))
+ (:return-type int))
+@@ -1821,8 +1817,7 @@
+ (:return-type c-string :malloc-free))
+ (def-call-out ungetc (:arguments (c int) (fp FILE))
+ (:return-type int))
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out fcloseall (:arguments) (:return-type int))
++(def-call-out fcloseall (:arguments) (:return-type int))
+ (def-call-out fdopen (:arguments (fildes int) (mode c-string))
+ (:return-type c-pointer))
+ (def-call-out fileno (:arguments (fp FILE)) (:return-type int))
+@@ -1900,11 +1895,11 @@
+ (:return-type (c-ptr-null dirent)))
+ (def-call-out readdir64 (:arguments (dirp c-pointer))
+ (:return-type (c-ptr-null dirent64)))
+-(def-call-out readdir_r
++(def-call-out readdir_r ; deprecated
+ (:arguments (dirp c-pointer) (entry (c-ptr dirent) :out :alloca)
+ (result (c-ptr (c-ptr dirent)) :out :alloca)) ; ??
+ (:return-type int))
+-(def-call-out readdir64_r
++(def-call-out readdir64_r ; deprecated
+ (:arguments (dirp c-pointer) (entry (c-ptr dirent64) :out :alloca)
+ (result (c-ptr (c-ptr dirent64)) :out :alloca)) ; ??
+ (:return-type int))
+diff -r -U3 clisp-2.49.90.orig/modules/bindings/glibc/test.tst clisp-2.49.90/modules/bindings/glibc/test.tst
+--- clisp-2.49.90.orig/modules/bindings/glibc/test.tst 2018-01-10 00:04:26.000000000 +0100
++++ clisp-2.49.90/modules/bindings/glibc/test.tst 2018-02-12 20:50:48.225769407 +0100
+@@ -14,6 +14,16 @@
+ (= linux:DT_DIR (linux:dirent64-d_type (show (linux:readdir64 *d*)))) T
+ (linux:closedir *d*) 0
+
++(stringp (show (linux:get-domain-name))) T
++(stringp (show (linux:get-host-name))) T
++
++;; usually __USE_GNU is defined, so this should work:
++(let* ((d (linux:get_current_dir_name))
++ (c (linux:canonicalize_file_name (concatenate 'string d "/."))))
++ (or (string= d c)
++ (list :cur-dir d :canonical c)))
++T
++
+ (defparameter *d* (show (linux:opendir "."))) *D*
+ (linux:dirent-d_name (show (linux:readdir *d*))) "."
+ (linux:dirent-d_name (show (linux:readdir *d*))) ".."
+diff -r -U3 clisp-2.49.90.orig/src/foreign1.lisp clisp-2.49.90/src/foreign1.lisp
+--- clisp-2.49.90.orig/src/foreign1.lisp 2018-01-10 00:04:26.000000000 +0100
++++ clisp-2.49.90/src/foreign1.lisp 2018-02-12 21:03:56.768736245 +0100
+@@ -805,14 +805,17 @@
+ c-name (to-c-string c-name) (third variable) (first variable))
+ (when *foreign-guard* (format *coutput-stream* "# endif~%"))))
+ (dolist (function *function-list*)
+- (let ((c-name (first function)))
+- (when *foreign-guard*
+- (format *coutput-stream* "# if defined(HAVE_~A)~%"
+- (string-upcase c-name)))
++ (let ((c-name (first function))
++ (guard (fourth function)))
++ (when guard
++ (format *coutput-stream* "# if ~A~%"
++ (if (eq guard t)
++ (format nil "defined(HAVE_~A)" (string-upcase c-name))
++ guard)))
+ (format *coutput-stream*
+ " register_foreign_function((void*)&~A,~A,~D);~%"
+ c-name (to-c-string c-name) (svref (second function) 3))
+- (when *foreign-guard* (format *coutput-stream* "# endif~%"))))
++ (when guard (format *coutput-stream* "# endif~%"))))
+ (maphash (lambda (type fun-vec)
+ (declare (ignore type))
+ (let ((c-name (to-c-name (car fun-vec))))
+@@ -1083,7 +1086,7 @@
+ (defmacro DEF-CALL-OUT (&whole whole-form name &rest options)
+ (setq name (check-symbol name (first whole-form)))
+ (let* ((alist
+- (parse-options options '(:name :arguments :return-type :language
++ (parse-options options '(:name :arguments :return-type :language :guard
+ :built-in :library :version :documentation)
+ whole-form))
+ (def (gensym "DEF-CALL-OUT-"))
+@@ -1095,6 +1098,7 @@
+ (version (second (assoc :version alist)))
+ (c-name (foreign-name name (assoc :name alist)))
+ (built-in (second (assoc :built-in alist)))
++ (guard (get-assoc :guard alist '*foreign-guard*))
+ ;; Maximize sharing in .fas file, reuse options
+ ;; parse-c-function ignores unknown options, e.g. :name
+ (ctype `(PARSE-C-FUNCTION ',options ',whole-form)))
+@@ -1102,7 +1106,7 @@
+ ',c-name ,ctype ',properties ,library ,version NIL)))
+ (EXT:COMPILER-LET ((,def ,ctype))
+ (EVAL-WHEN (COMPILE)
+- (UNLESS ,LIBRARY (NOTE-C-FUN ',c-name ,def ',built-in)))
++ (UNLESS ,LIBRARY (NOTE-C-FUN ',c-name ,def ',built-in ,guard)))
+ (SYSTEM::EVAL-WHEN-COMPILE
+ (SYSTEM::C-DEFUN ',name (C-TYPE-TO-SIGNATURE ,ctype))))
+ (WHEN ,def ; found library function
+@@ -1110,10 +1114,10 @@
+ (SYSTEM::%PUTD ',name ,def))
+ ',name)))
+
+-(defun note-c-fun (c-name ctype built-in) ; not ABI, compile-time only
++(defun note-c-fun (c-name ctype built-in guard) ; not ABI, compile-time only
+ (when (system::prepare-coutput-file)
+ (prepare-module)
+- (push (list c-name ctype built-in)
++ (push (list c-name ctype built-in guard)
+ *function-list*)))
+
+ (defun count-inarguments (arg-vector)
diff --git a/dev-lisp/clisp/files/clisp-2.49.92-after_glibc_cfree_bdb.patch b/dev-lisp/clisp/files/clisp-2.49.92-after_glibc_cfree_bdb.patch
new file mode 100644
index 000000000000..ae83bbb8770d
--- /dev/null
+++ b/dev-lisp/clisp/files/clisp-2.49.92-after_glibc_cfree_bdb.patch
@@ -0,0 +1,185 @@
+diff -r -U3 clisp-2.49.90.orig/modules/berkeley-db/bdb.c clisp-2.49.90/modules/berkeley-db/bdb.c
+--- clisp-2.49.90.orig/modules/berkeley-db/bdb.c 2018-01-27 12:03:01.000000000 +0100
++++ clisp-2.49.90/modules/berkeley-db/bdb.c 2018-02-12 20:37:24.203803219 +0100
+@@ -2216,7 +2216,13 @@
+ c_data.compact_timeout = timeout;
+ c_data.compact_pages = pages;
+ SYSCALL(db->compact,(db,txn,pstart,pstop,&c_data,flags,&end));
+- pushSTACK(uint32_to_I(c_data.compact_empty_buckets));
++ /* ====
++ * compact_empty_buckets is in bdb-5.3 as part of output stats
++ * however this version use bdb-4.8 which does not have it
++ * ====
++ *
++ * pushSTACK(uint32_to_I(c_data.compact_empty_buckets));
++ * */
+ pushSTACK(uint32_to_I(c_data.compact_pages_free));
+ pushSTACK(uint32_to_I(c_data.compact_pages_examine));
+ pushSTACK(uint32_to_I(c_data.compact_levels));
+diff -r -U3 clisp-2.49.90.orig/modules/bindings/glibc/linux.lisp clisp-2.49.90/modules/bindings/glibc/linux.lisp
+--- clisp-2.49.90.orig/modules/bindings/glibc/linux.lisp 2018-01-10 00:32:25.000000000 +0100
++++ clisp-2.49.90/modules/bindings/glibc/linux.lisp 2018-02-12 20:48:22.467775536 +0100
+@@ -1,7 +1,7 @@
+ ;; Foreign functions provided by the Linux C library version 6,
+ ;; i.e. the GNU C library version 2.0.7.
+ ;; Bruno Haible 10.4.1998, 19.4.1998
+-;; Sam Steingold 2002-2008, 2011
++;; Sam Steingold 2002-2008, 2011, 2013, 2016-2017
+
+ ;; NB: quite a few functions here have more portable counterparts in POSIX
+
+@@ -686,9 +686,8 @@
+ (def-call-out system? (:arguments (null c-string))
+ (:return-type boolean) (:name "system"))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out canonicalize_file_name (:arguments (name c-string))
+-; (:return-type c-string :malloc-free))
++(def-call-out canonicalize_file_name (:arguments (name c-string))
++ (:return-type c-string :malloc-free))
+
+ (def-call-out realpath
+ (:arguments (name c-string)
+@@ -1040,9 +1039,8 @@
+ (def-call-out access (:arguments (name c-string) (type int))
+ (:return-type int))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out euidaccess (:arguments (name c-string) (type int))
+-; (:return-type int))
++(def-call-out euidaccess (:arguments (name c-string) (type int))
++ (:return-type int))
+
+ (defconstant SEEK_SET 0)
+ (defconstant SEEK_CUR 1)
+@@ -1093,9 +1091,8 @@
+ ;(def-call-out getcwd (:arguments (buf c-string :out) (size size_t)) ; ??
+ ; (:return-type c-string))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out get_current_dir_name (:arguments)
+-; (:return-type c-string :malloc-free))
++(def-call-out get_current_dir_name (:arguments)
++ (:return-type c-string :malloc-free))
+
+ ;(def-call-out getwd (:arguments (buf c-string :out)) ; ??
+ ; (:return-type c-string))
+@@ -1323,8 +1320,7 @@
+ ; (:arguments (size int) (list (c-ptr (c-array gid_t ??)) :out)) ; ??
+ ; (:return-type int))
+
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out group_member (:arguments (gid gid_t)) (:return-type boolean))
++(def-call-out group_member (:arguments (gid gid_t)) (:return-type boolean))
+ (def-call-out setuid (:arguments (uid uid_t)) (:return-type int))
+ (def-call-out setreuid (:arguments (ruid uid_t) (euid uid_t))
+ (:return-type int))
+@@ -1821,8 +1817,7 @@
+ (:return-type c-string :malloc-free))
+ (def-call-out ungetc (:arguments (c int) (fp FILE))
+ (:return-type int))
+-; You can uncomment this if your compiler sets __USE_GNU
+-; (def-call-out fcloseall (:arguments) (:return-type int))
++(def-call-out fcloseall (:arguments) (:return-type int))
+ (def-call-out fdopen (:arguments (fildes int) (mode c-string))
+ (:return-type c-pointer))
+ (def-call-out fileno (:arguments (fp FILE)) (:return-type int))
+@@ -1900,11 +1895,11 @@
+ (:return-type (c-ptr-null dirent)))
+ (def-call-out readdir64 (:arguments (dirp c-pointer))
+ (:return-type (c-ptr-null dirent64)))
+-(def-call-out readdir_r
++(def-call-out readdir_r ; deprecated
+ (:arguments (dirp c-pointer) (entry (c-ptr dirent) :out :alloca)
+ (result (c-ptr (c-ptr dirent)) :out :alloca)) ; ??
+ (:return-type int))
+-(def-call-out readdir64_r
++(def-call-out readdir64_r ; deprecated
+ (:arguments (dirp c-pointer) (entry (c-ptr dirent64) :out :alloca)
+ (result (c-ptr (c-ptr dirent64)) :out :alloca)) ; ??
+ (:return-type int))
+diff -r -U3 clisp-2.49.90.orig/modules/bindings/glibc/test.tst clisp-2.49.90/modules/bindings/glibc/test.tst
+--- clisp-2.49.90.orig/modules/bindings/glibc/test.tst 2018-01-10 00:04:26.000000000 +0100
++++ clisp-2.49.90/modules/bindings/glibc/test.tst 2018-02-12 20:50:48.225769407 +0100
+@@ -14,6 +14,16 @@
+ (= linux:DT_DIR (linux:dirent64-d_type (show (linux:readdir64 *d*)))) T
+ (linux:closedir *d*) 0
+
++(stringp (show (linux:get-domain-name))) T
++(stringp (show (linux:get-host-name))) T
++
++;; usually __USE_GNU is defined, so this should work:
++(let* ((d (linux:get_current_dir_name))
++ (c (linux:canonicalize_file_name (concatenate 'string d "/."))))
++ (or (string= d c)
++ (list :cur-dir d :canonical c)))
++T
++
+ (defparameter *d* (show (linux:opendir "."))) *D*
+ (linux:dirent-d_name (show (linux:readdir *d*))) "."
+ (linux:dirent-d_name (show (linux:readdir *d*))) ".."
+diff -r -U3 clisp-2.49.90.orig/src/foreign1.lisp clisp-2.49.90/src/foreign1.lisp
+--- clisp-2.49.90.orig/src/foreign1.lisp 2018-01-10 00:04:26.000000000 +0100
++++ clisp-2.49.90/src/foreign1.lisp 2018-02-12 21:03:56.768736245 +0100
+@@ -805,14 +805,17 @@
+ c-name (to-c-string c-name) (third variable) (first variable))
+ (when *foreign-guard* (format *coutput-stream* "# endif~%"))))
+ (dolist (function *function-list*)
+- (let ((c-name (first function)))
+- (when *foreign-guard*
+- (format *coutput-stream* "# if defined(HAVE_~A)~%"
+- (string-upcase c-name)))
++ (let ((c-name (first function))
++ (guard (fourth function)))
++ (when guard
++ (format *coutput-stream* "# if ~A~%"
++ (if (eq guard t)
++ (format nil "defined(HAVE_~A)" (string-upcase c-name))
++ guard)))
+ (format *coutput-stream*
+ " register_foreign_function((void*)&~A,~A,~D);~%"
+ c-name (to-c-string c-name) (svref (second function) 3))
+- (when *foreign-guard* (format *coutput-stream* "# endif~%"))))
++ (when guard (format *coutput-stream* "# endif~%"))))
+ (maphash (lambda (type fun-vec)
+ (declare (ignore type))
+ (let ((c-name (to-c-name (car fun-vec))))
+@@ -1083,7 +1086,7 @@
+ (defmacro DEF-CALL-OUT (&whole whole-form name &rest options)
+ (setq name (check-symbol name (first whole-form)))
+ (let* ((alist
+- (parse-options options '(:name :arguments :return-type :language
++ (parse-options options '(:name :arguments :return-type :language :guard
+ :built-in :library :version :documentation)
+ whole-form))
+ (def (gensym "DEF-CALL-OUT-"))
+@@ -1095,6 +1098,7 @@
+ (version (second (assoc :version alist)))
+ (c-name (foreign-name name (assoc :name alist)))
+ (built-in (second (assoc :built-in alist)))
++ (guard (get-assoc :guard alist '*foreign-guard*))
+ ;; Maximize sharing in .fas file, reuse options
+ ;; parse-c-function ignores unknown options, e.g. :name
+ (ctype `(PARSE-C-FUNCTION ',options ',whole-form)))
+@@ -1102,7 +1106,7 @@
+ ',c-name ,ctype ',properties ,library ,version NIL)))
+ (EXT:COMPILER-LET ((,def ,ctype))
+ (EVAL-WHEN (COMPILE)
+- (UNLESS ,LIBRARY (NOTE-C-FUN ',c-name ,def ',built-in)))
++ (UNLESS ,LIBRARY (NOTE-C-FUN ',c-name ,def ',built-in ,guard)))
+ (SYSTEM::EVAL-WHEN-COMPILE
+ (SYSTEM::C-DEFUN ',name (C-TYPE-TO-SIGNATURE ,ctype))))
+ (WHEN ,def ; found library function
+@@ -1110,10 +1114,10 @@
+ (SYSTEM::%PUTD ',name ,def))
+ ',name)))
+
+-(defun note-c-fun (c-name ctype built-in) ; not ABI, compile-time only
++(defun note-c-fun (c-name ctype built-in guard) ; not ABI, compile-time only
+ (when (system::prepare-coutput-file)
+ (prepare-module)
+- (push (list c-name ctype built-in)
++ (push (list c-name ctype built-in guard)
+ *function-list*)))
+
+ (defun count-inarguments (arg-vector)
diff --git a/dev-lisp/clisp/metadata.xml b/dev-lisp/clisp/metadata.xml
new file mode 100644
index 000000000000..16a600559061
--- /dev/null
+++ b/dev-lisp/clisp/metadata.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription>
+CLISP is a Common Lisp implementation. It mostly supports the Lisp
+described in the ANSI Common Lisp standard. It includes an
+interpreter, a compiler, almost all of CLOS, a foreign language
+interface and a socket interface. An X11 interface is available
+through CLX and Garnet. Command line editing is provided by readline.
+CLISP runs on microcomputers (OS/2, Windows 95/98/NT/2000/XP, Amiga
+500-4000, Acorn RISC PC) as well as on Unix workstations (GNU/Linux,
+BSD, SVR4, Sun4, DEC Alpha OSF, HP-UX, NeXTstep, SGI, AIX, Sun3 and
+others) and needs only 2 MB of RAM. The user interface comes in
+German, English, French, Spanish, Dutch and Russian, and can be
+changed at run time.
+</longdescription>
+ <use>
+ <flag name="hyperspec">Use local hyperspec instead of online version</flag>
+ <flag name="svm">Build CLISP with support for the Support Vector Machine module</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">clisp</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/clozurecl/Manifest b/dev-lisp/clozurecl/Manifest
new file mode 100644
index 000000000000..bfc4b91eba63
--- /dev/null
+++ b/dev-lisp/clozurecl/Manifest
@@ -0,0 +1,5 @@
+DIST ccl-1.11.5-darwinx86.tar.gz 100515656 BLAKE2B d9ae52f7d0c481211fdf53bf6bb4bb65a66ab60bf1c3548e9f2d502e60906163121a85330e547d15e3d4bcb6ad47564e86dd93b4228a9391558463347011990f SHA512 1016ab9672839d1303809e9f5b849cf36dc300963672dfa5888b75f6dadee3106cd6f1375e544437a92c7307dc8639e423e12663ca157b851925d0e82f0cd4b7
+DIST ccl-1.11.5-linuxarm.tar.gz 40288609 BLAKE2B 5217de314e6c59e5bbee7d5608b4e92088fb57dc0d8a90454ec4653c1710857748776d9a7ee2e89e86613f64fc028aca324ea5cb3bc7eb5e9bc582e2b50766cf SHA512 0305baa66263a2182ba8deb02837287ffb6c1472987d4953caa8839cad6503815ded7fe6bfde72a823b90d3ff86322602ee3d0934e179fb2418e3b049f55be4e
+DIST ccl-1.11.5-linuxx86.tar.gz 50652181 BLAKE2B 2ed6e747a72816c6f79f58715261c41a1c3b98fa84ef4ee82ca5683383741777a46a566c7884d7fdc3dcd2e5959dab2f3fde9432945a4dc73bcece8f741ed753 SHA512 b6c16d9bba27a901f942237ed42d6b3e832910951270820a2a3d61afe2a8e7f59d383c854382cfcaa0bf8253c8d624be66d905b4170211ea39a106ca85b9a23d
+DIST ccl-1.11.5-solarisx86.tar.gz 59139069 BLAKE2B db1a904dd4e794127e7c966a9734aa92bb0415520a6af35d92008fd785004bd2ea04deb66f600b1d1dd60c0b95519e86d412b208878aaa6c2f9f8c05a27efe38 SHA512 4ae7cee7e35de41ab20d79e073b12b6bd98a23beea95c0de7d882a1f4e1ea3f9f3162844df0578aeeadb671d30a0a488092ee93b35245c693051a4ab9193fc5b
+DIST ccl.html 962003 BLAKE2B fc95ec5abbea7c2f5f247293691a5c5a7eddaa049156c38766ec9df4d1920fdee902c89db976cc6687535aef5ddda3c672b62156bf0f61b6369ade548dcb0141 SHA512 0cb9ee8f7eb6007e08241a0797519ff3bfc3d3adc0b5ac86e6a2e9e8b2e316fc421bea3b04159decc0a2b37ff7098147e25266946cc3c1ac367b93e4821a8b64
diff --git a/dev-lisp/clozurecl/clozurecl-1.11.5.ebuild b/dev-lisp/clozurecl/clozurecl-1.11.5.ebuild
new file mode 100644
index 000000000000..5c3a3d5125c7
--- /dev/null
+++ b/dev-lisp/clozurecl/clozurecl-1.11.5.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils flag-o-matic multilib toolchain-funcs vcs-clean
+
+MY_PN=ccl
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Common Lisp implementation, derived from Digitool's MCL product"
+HOMEPAGE="https://ccl.clozure.com"
+SRC_URI="
+ x86? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-linuxx86.tar.gz )
+ amd64? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-linuxx86.tar.gz )
+ arm? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-linuxarm.tar.gz )
+ x86-macos? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-darwinx86.tar.gz )
+ x64-macos? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-darwinx86.tar.gz )
+ x86-solaris? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-solarisx86.tar.gz )
+ x64-solaris? ( https://github.com/Clozure/ccl/releases/download/v${PV}/${MY_P}-solarisx86.tar.gz )
+ doc? ( https://ccl.clozure.com/docs/ccl.html )"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux ~x64-macos"
+IUSE="doc"
+
+RDEPEND=">=dev-lisp/asdf-2.33-r3:="
+DEPEND="${RDEPEND}"
+
+S="${WORKDIR}"/${MY_PN}
+ENVD="${T}/50ccl"
+
+PATCHES=( "${FILESDIR}"/${P}-no-pie-32.patch )
+
+src_prepare() {
+ default
+ cp "${EPREFIX}/usr/share/common-lisp/source/asdf/build/asdf.lisp" tools/ || die
+}
+
+src_configure() {
+ if use x86-macos; then
+ CCL_RUNTIME=dx86cl; CCL_HEADERS=darwin-x86-headers; CCL_KERNEL=darwinx8632
+ elif use x64-macos; then
+ CCL_RUNTIME=dx86cl64; CCL_HEADERS=darwin-x86-headers64; CCL_KERNEL=darwinx8664
+ elif use x86-solaris; then
+ CCL_RUNTIME=sx86cl; CCL_HEADERS=solarisx86-headers; CCL_KERNEL=solarisx86
+ elif use x64-solaris; then
+ CCL_RUNTIME=sx86cl64; CCL_HEADERS=solarisx64-headers; CCL_KERNEL=solarisx64
+ elif use x86; then
+ CCL_RUNTIME=lx86cl; CCL_HEADERS=x86-headers; CCL_KERNEL=linuxx8632
+ elif use amd64; then
+ CCL_RUNTIME=lx86cl64; CCL_HEADERS=x86-headers64; CCL_KERNEL=linuxx8664
+ elif use arm; then
+ CCL_RUNTIME=armcl; CCL_HEADERS=arm-headers; CCL_KERNEL=linuxarm
+ elif use ppc; then
+ CCL_RUNTIME=ppccl; CCL_HEADERS=headers; CCL_KERNEL=linuxppc
+ elif use ppc64; then
+ CCL_RUNTIME=ppccl64; CCL_HEADERS=headers64; CCL_KERNEL=linuxppc64
+ fi
+}
+
+src_compile() {
+ emake -C lisp-kernel/${CCL_KERNEL} clean
+ emake -C lisp-kernel/${CCL_KERNEL} all CC="$(tc-getCC)"
+
+ unset CCL_DEFAULT_DIRECTORY
+ ./${CCL_RUNTIME} -n -b -Q -e '(ccl:rebuild-ccl :full t)' -e '(ccl:quit)' || die "Compilation failed"
+
+ # remove non-owner write permissions on the full-image
+ chmod go-w ${CCL_RUNTIME}{,.image} || die
+
+ esvn_clean
+}
+
+src_install() {
+ local target_dir="/usr/$(get_libdir)/${PN}"
+ local prefix_dir="${EPREFIX}/${target_dir#/}"
+
+ mkdir -p "${D}/${prefix_dir#/}"
+
+ find . -type f -name '*fsl' -delete || die
+ rm -f lisp-kernel/${CCL_KERNEL}/*.o || die
+ cp -a compiler level-0 level-1 lib library lisp-kernel scripts \
+ tools xdump ${CCL_HEADERS} ${CCL_RUNTIME} ${CCL_RUNTIME}.image \
+ "${D}/${prefix_dir#/}" || die
+
+ echo "CCL_DEFAULT_DIRECTORY=${prefix_dir}" > "${ENVD}"
+ doenvd "${ENVD}"
+
+ dosym "${target_dir}/${CCL_RUNTIME}" /usr/bin/ccl
+ dodoc doc/release-notes.txt
+
+ if use doc ; then
+ dodoc "${DISTDIR}/ccl.html"
+ dodoc -r doc/manual
+ dodoc -r examples
+ fi
+}
diff --git a/dev-lisp/clozurecl/files/clozurecl-1.11.5-no-pie-32.patch b/dev-lisp/clozurecl/files/clozurecl-1.11.5-no-pie-32.patch
new file mode 100644
index 000000000000..2396c7a316cf
--- /dev/null
+++ b/dev-lisp/clozurecl/files/clozurecl-1.11.5-no-pie-32.patch
@@ -0,0 +1,7 @@
+--- a/lisp-kernel/linuxx8632/Makefile
++++ b/lisp-kernel/linuxx8632/Makefile
+@@ -76,3 +76,3 @@ USE_LINK_SCRIPT = # -T $(LINK_SCRIPT)
+ ../../lx86cl: $(KSPOBJ) $(KERNELOBJ) $(DEBUGOBJ) Makefile $(LINK_SCRIPT)
+- $(CC) -m32 $(CDEBUG) -Wl,--export-dynamic $(HASH_STYLE) -o $@ $(USE_LINK_SCRIPT) $(KSPOBJ) $(KERNELOBJ) $(DEBUGOBJ) -Wl,--no-as-needed $(OSLIBS)
++ $(CC) -m32 $(CDEBUG) -Wl,--export-dynamic $(HASH_STYLE) -no-pie -o $@ $(USE_LINK_SCRIPT) $(KSPOBJ) $(KERNELOBJ) $(DEBUGOBJ) -Wl,--no-as-needed $(OSLIBS)
+
diff --git a/dev-lisp/clozurecl/metadata.xml b/dev-lisp/clozurecl/metadata.xml
new file mode 100644
index 000000000000..a4d8d549ef24
--- /dev/null
+++ b/dev-lisp/clozurecl/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+</maintainer>
+<longdescription>
+Clozure Common Lisp (formerly OpenMCL) is a Common Lisp implementation.
+</longdescription>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/clx/Manifest b/dev-lisp/clx/Manifest
new file mode 100644
index 000000000000..9b7e836335f6
--- /dev/null
+++ b/dev-lisp/clx/Manifest
@@ -0,0 +1 @@
+DIST clx-0.7.5.tar.gz 468904 BLAKE2B 30ce4de52fdbbc935bf5653f54a588537670b7d55dc038f32b4527e5f3d7b2dfe6afde3d28debf7ab5a08994155ec390f1e70dfbe45e8831fe7a977d245c9d7a SHA512 9228c37a99dcaee637c64c58183220c1ed3745e683c877f843c7de5b052d7355a3ddd50687371e8388c05bcedda062008299476b82dc8a3d26b605dde1dfa997
diff --git a/dev-lisp/clx/clx-0.7.5.ebuild b/dev-lisp/clx/clx-0.7.5.ebuild
new file mode 100644
index 000000000000..8cd18ea3e421
--- /dev/null
+++ b/dev-lisp/clx/clx-0.7.5.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3 eutils
+
+DESCRIPTION="CLX is the Common Lisp interface to the X11 protocol primarily for SBCL."
+HOMEPAGE="http://www.cliki.net/CLX"
+SRC_URI="https://github.com/sharplispers/clx/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE="doc"
+
+DEPEND="sys-apps/texinfo
+ doc? ( virtual/texi2dvi )"
+RDEPEND="!dev-lisp/cl-${PN}"
+
+src_compile() {
+ cd manual || die
+ makeinfo ${PN}.texinfo -o ${PN}.info || die
+ if use doc ; then
+ VARTEXFONTS="${T}"/fonts \
+ texi2pdf ${PN}.texinfo -o ${PN}.pdf || die
+ fi
+}
+
+src_install() {
+ common-lisp-install-sources *.lisp debug demo extensions tests
+ common-lisp-install-asdf
+ dodoc NEWS CHANGES README*
+ doinfo manual/${PN}.info
+ use doc && dodoc manual/${PN}.pdf
+}
diff --git a/dev-lisp/clx/metadata.xml b/dev-lisp/clx/metadata.xml
new file mode 100644
index 000000000000..5a15bfe4e386
--- /dev/null
+++ b/dev-lisp/clx/metadata.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ CLX provides an implementation of the X Window System protocol to
+ Lisp graphics library[ies] and applications. It is the Common Lisp
+ equivalent of Xlib.
+ </longdescription>
+ <longdescription lang="es">
+ CLX ofrece una implementación del protocolo del sistema X Window
+ a las librerías y aplicaciones gráficas escritas en Lisp. Es el
+ equivamente en Common Lisp a Xlib.
+ </longdescription>
+ <use>
+ <flag name="doc">Builds documentation</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">sharplispers/clx</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/cmucl/Manifest b/dev-lisp/cmucl/Manifest
new file mode 100644
index 000000000000..cd8cafb04080
--- /dev/null
+++ b/dev-lisp/cmucl/Manifest
@@ -0,0 +1,2 @@
+DIST cmucl-21c-x86-linux.tar.bz2 11127872 BLAKE2B b9089a40b4a0738f9faccdfddb7b33256a561a07cedc3ef9b3ec7afddbbb9de493c2ffb9af4a8d6b6ce70ef857576870901a6b7a607f52bdaf8a0f53ddd2d07e SHA512 9097220aef612aa3d8367a86a86dc62d86d918190d2688f6e90d415c9f9d881f97f0829e9d310f700b014821d30bf5a15f7a05cdb9201c9deab10a7231e0bcb6
+DIST cmucl-src-21c.tar.bz2 6947775 BLAKE2B 828075c71ddf459d09076199af4a02f2294063bd9ef0beb6d4bcbb473dd0ff8cfdff7faa9416f640e125603301fa37c73a280db597bf4301c22fbe88c4cc2dbb SHA512 98ea0516b71af7c6f92b5f67f6c1545949fcd1dc95e1238a989c1c2858a75e2751e5eb765b29812ad5cc5de015333787dac2a63a9ddea9bb83cfd72fef6794f4
diff --git a/dev-lisp/cmucl/cmucl-21c.ebuild b/dev-lisp/cmucl/cmucl-21c.ebuild
new file mode 100644
index 000000000000..0de64d060786
--- /dev/null
+++ b/dev-lisp/cmucl/cmucl-21c.ebuild
@@ -0,0 +1,109 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils toolchain-funcs multilib
+
+MY_PV=${PV:0:3}
+
+DESCRIPTION="CMU Common Lisp is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://www.cons.org/cmucl/"
+SRC_URI="http://common-lisp.net/project/cmucl/downloads/release/${MY_PV}/cmucl-src-${MY_PV}.tar.bz2
+ http://common-lisp.net/project/cmucl/downloads/release/${MY_PV}/cmucl-${MY_PV}-x86-linux.tar.bz2"
+
+LICENSE="public-domain"
+SLOT="0"
+KEYWORDS="x86"
+IUSE="X doc source"
+
+CDEPEND=">=dev-lisp/asdf-2.33-r3:=
+ x11-libs/motif:0"
+DEPEND="${CDEPEND}
+ sys-devel/bc
+ doc? ( virtual/latex-base )"
+RDEPEND="${CDEPEND}"
+
+S="${WORKDIR}"
+
+TARGET=linux-4
+
+src_prepare() {
+ eapply "${FILESDIR}"/${P}-execstack-fixes.patch
+ eapply "${FILESDIR}"/${P}-build.patch
+ eapply_user
+ #cp "${FILESDIR}"/os-common.h src/lisp/ || die
+ cp /usr/share/common-lisp/source/asdf/build/asdf.lisp src/contrib/asdf/ || die
+}
+
+src_compile() {
+ local cmuopts buildimage
+
+ if use X ; then
+ cmuopts=""
+ else
+ cmuopts="-u"
+ fi
+
+ buildimage="bin/lisp -batch"
+
+ env CC="$(tc-getCC)" bin/build.sh -v "-gentoo-${PR}" -C "" -o "${buildimage}" ${cmuopts} || die "Cannot build the compiler"
+
+ # Compile up the asdf and defsystem modules
+ ${TARGET}/lisp/lisp -noinit -nositeinit -batch << EOF || die
+(in-package :cl-user)
+(setf (ext:search-list "target:")
+ '("$TARGET/" "src/"))
+(setf (ext:search-list "modules:")
+ '("target:contrib/"))
+
+(compile-file "modules:asdf/asdf")
+(compile-file "modules:defsystem/defsystem")
+EOF
+
+ # Documentation
+ if use doc; then
+ pushd src/docs/cmu-user > /dev/null || die "directory src/docs/cmu-user does not exist"
+ emake
+ cd ../internals || die "directory src/docs/internals does not exist"
+ emake
+ popd > /dev/null
+ fi
+}
+
+src_install() {
+ bin/make-dist.sh -S -g -G root -O root -M share/man/man1 -V ${MY_PV} -A x86 -o linux ${TARGET} \
+ || die "Cannot build installation archive"
+ # Necessary otherwise tar will fail
+ dodir /usr
+ pushd "${D}"/usr > /dev/null
+ tar xzpf "${WORKDIR}"/cmucl-${MY_PV}-x86-linux.tar.gz \
+ || die "Cannot install main system"
+ if use X ; then
+ tar xzpf "${WORKDIR}"/cmucl-${MY_PV}-x86-linux.extra.tar.gz \
+ || die "Cannot install extra files"
+ fi
+ if use source; then
+ # Necessary otherwise tar will fail
+ dodir /usr/share/common-lisp/source/${PN}
+ cd "${D}"/usr/share/common-lisp/source/${PN} || die
+ tar --strip-components 1 -xzpf "${WORKDIR}"/cmucl-src-${MY_PV}.tar.gz \
+ || die "Cannot install sources"
+ fi
+ popd > /dev/null
+
+ # Install site config file
+ sed "s,@PF@,${PF},g ; s,@VERSION@,$(date +%F),g" \
+ < "${FILESDIR}"/site-init.lisp.in \
+ > "${D}"/usr/$(get_libdir)/cmucl/site-init.lisp \
+ || die "Cannot fix site-init.lisp"
+ insinto /etc/common-lisp
+ doins "${FILESDIR}"/cmuclrc
+
+ # Documentation
+ dodoc doc/cmucl/README
+ if use doc; then
+ insinto /usr/share/doc/${PF}
+ doins src/docs/cmu-user/cmu-user.pdf src/docs/internals/design.pdf
+ fi
+}
diff --git a/dev-lisp/cmucl/files/cmucl-21c-build.patch b/dev-lisp/cmucl/files/cmucl-21c-build.patch
new file mode 100644
index 000000000000..4d7e4061c924
--- /dev/null
+++ b/dev-lisp/cmucl/files/cmucl-21c-build.patch
@@ -0,0 +1,22 @@
+diff -r -U2 21a.orig/bin/build.sh 21a/bin/build.sh
+--- 21a.orig/bin/build.sh 2015-05-19 07:42:40.000000000 +0600
++++ 21a/bin/build.sh 2016-04-03 20:54:08.597016537 +0600
+@@ -40,5 +40,5 @@
+ ENABLE4="yes"
+
+-version=21b
++version=21c
+ SRCDIR=src
+ BINDIR=bin
+@@ -145,10 +145,9 @@
+ $TOOLDIR/load-world.sh $TARGET "$VERSION" || { echo "Failed: $TOOLDIR/load-world.sh"; exit 1; }
+
+- $TARGET/lisp/lisp -batch -noinit -nositeinit $FPU_MODE < /dev/null || { echo "Failed: $TARGET/lisp/lisp -batch -noinit $FPU_MODE"; exit 1; }
++ $TARGET/lisp/lisp -batch -noinit -nositeinit < /dev/null || { echo "Failed: $TARGET/lisp/lisp -batch -noinit"; exit 1; }
+ return 0;
+ fi
+ }
+
+-FPU_MODE=
+ BUILDWORLD="$TOOLDIR/build-world.sh"
+ BUILD_POT="yes"
diff --git a/dev-lisp/cmucl/files/cmucl-21c-execstack-fixes.patch b/dev-lisp/cmucl/files/cmucl-21c-execstack-fixes.patch
new file mode 100644
index 000000000000..034848d64a26
--- /dev/null
+++ b/dev-lisp/cmucl/files/cmucl-21c-execstack-fixes.patch
@@ -0,0 +1,118 @@
+diff -Naur work.old/src/lisp/alpha-assem.S work/src/lisp/alpha-assem.S
+--- work.old/src/lisp/alpha-assem.S 2003-03-06 11:13:09.000000000 -0300
++++ work/src/lisp/alpha-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -297,3 +297,7 @@
+ function_end_breakpoint_end:
+
+
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/amd64-assem.S work/src/lisp/amd64-assem.S
+--- work.old/src/lisp/amd64-assem.S 2004-07-27 19:03:53.000000000 -0300
++++ work/src/lisp/amd64-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -1051,3 +1051,7 @@
+ .end
+
+ #endif /* LINKAGE_TABLE */
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/backtrace.c work/src/lisp/backtrace.c
+--- work.old/src/lisp/backtrace.c 2009-06-11 13:04:01.000000000 -0300
++++ work/src/lisp/backtrace.c 2010-05-10 00:06:22.000000000 -0300
+@@ -3,6 +3,8 @@
+ * Simple backtrace facility. More or less from Rob's lisp version.
+ */
+
++#include "os-common.h"
++
+ #include <stdio.h>
+ #include <signal.h>
+ #include "lisp.h"
+diff -Naur work.old/src/lisp/hppa-assem.S work/src/lisp/hppa-assem.S
+--- work.old/src/lisp/hppa-assem.S 2002-08-23 14:05:35.000000000 -0300
++++ work/src/lisp/hppa-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -460,3 +460,7 @@
+
+ .export function_end_breakpoint_end
+ function_end_breakpoint_end
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/linux-stubs.S work/src/lisp/linux-stubs.S
+--- work.old/src/lisp/linux-stubs.S 2005-08-17 00:40:16.000000000 -0300
++++ work/src/lisp/linux-stubs.S 2010-05-10 00:06:34.000000000 -0300
+@@ -995,3 +995,7 @@
+ /* doe(yperr_string) */
+ /* doe(ypprot_err) */
+ #endif /* defined(LINKAGE_TABLE) && !defined(__FreeBSD__) */
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/lisp.c work/src/lisp/lisp.c
+--- work.old/src/lisp/lisp.c 2009-07-13 16:41:54.000000000 -0300
++++ work/src/lisp/lisp.c 2010-05-10 00:05:55.000000000 -0300
+@@ -5,6 +5,9 @@
+ *
+ */
+
++#include "os-common.h"
++#include <time.h>
++
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <limits.h>
+diff -Naur work.old/src/lisp/mips-assem.S work/src/lisp/mips-assem.S
+--- work.old/src/lisp/mips-assem.S 2002-08-23 14:01:02.000000000 -0300
++++ work/src/lisp/mips-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -402,3 +402,7 @@
+ move v0, a1
+ j _restore_state
+ .end save_state
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/os-common.h work/src/lisp/os-common.h
+--- work.old/src/lisp/os-common.h 1969-12-31 21:00:00.000000000 -0300
++++ work/src/lisp/os-common.h 2010-05-10 00:06:22.000000000 -0300
+@@ -0,0 +1 @@
++char* convert_lisp_string(char *c_string, void *lisp_string, int len);
+diff -Naur work.old/src/lisp/ppc-assem.S work/src/lisp/ppc-assem.S
+--- work.old/src/lisp/ppc-assem.S 2006-02-25 01:35:58.000000000 -0300
++++ work/src/lisp/ppc-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -721,3 +721,7 @@
+ SET_SIZE(fpu_restore)
+
+ #endif
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/sparc-assem.S work/src/lisp/sparc-assem.S
+--- work.old/src/lisp/sparc-assem.S 2003-10-23 23:57:00.000000000 -0300
++++ work/src/lisp/sparc-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -837,3 +837,7 @@
+ * End:
+ */
+
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
+diff -Naur work.old/src/lisp/x86-assem.S work/src/lisp/x86-assem.S
+--- work.old/src/lisp/x86-assem.S 2008-12-24 02:36:40.000000000 -0200
++++ work/src/lisp/x86-assem.S 2010-05-10 00:06:34.000000000 -0300
+@@ -798,3 +798,7 @@
+ ENDFUNC(undefined_foreign_symbol_trap)
+
+ #endif /* LINKAGE_TABLE */
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
diff --git a/dev-lisp/cmucl/files/cmuclrc b/dev-lisp/cmucl/files/cmuclrc
new file mode 100644
index 000000000000..e663e92af87a
--- /dev/null
+++ b/dev-lisp/cmucl/files/cmuclrc
@@ -0,0 +1,9 @@
+;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
+;;;
+
+(in-package :common-lisp-user)
+
+(if (probe-file "/etc/gentoo-init.lisp")
+ (load "/etc/gentoo-init.lisp")
+ (format t "~%;;; Warning: There is no /etc/gentoo-init.lisp file ~
+\(which should be provided by dev-lisp/gentoo-init"))
diff --git a/dev-lisp/cmucl/files/site-init.lisp.in b/dev-lisp/cmucl/files/site-init.lisp.in
new file mode 100644
index 000000000000..1b232166c889
--- /dev/null
+++ b/dev-lisp/cmucl/files/site-init.lisp.in
@@ -0,0 +1,56 @@
+;;; -*- Mode: Lisp; Package: System -*-
+;;;
+;;; **********************************************************************
+;;; This code was written as part of the CMU Common Lisp project at
+;;; Carnegie Mellon University, and has been placed in the public domain.
+;;;
+
+;;; Heavy modifications by Peter Van Eynde
+
+;;; More modifications for Gentoo by Matthew Kennedy
+;;; <mkennedy@gentoo.org>
+
+(in-package "SYSTEM")
+
+(if (probe-file "/etc/cmuclrc")
+ (load "/etc/cmuclrc")
+ (format t "~%;;; Warning: There is no /etc/cmuclrc file (which should have been created during emerge"))
+
+;;; If you have sources installed on your system, un-comment the following form
+;;; and change it to point to the source location. This will allow the Hemlock
+;;; "Edit Definition" command and the debugger to find sources for functions in
+;;; the core.
+(when (probe-file #p"/usr/share/common-lisp/source/cmucl/")
+ (setf (ext:search-list "target:")
+ '(
+ "/usr/share/common-lisp/source/cmucl/" ; object dir
+ )))
+
+;;; (setf (ext:search-list "library:") '("/usr/lib/cmucl/lib/"))
+;;; for safety...
+
+;;; Put your site name here...
+(setq *short-site-name* "Unknown")
+(setq *long-site-name* "Site name not initialized")
+
+(in-package :common-lisp-user)
+
+;;; newbie functions, delete if you don't like them
+
+(defun help ()
+ (format t "~
+Welcome to the Gentoo GNU/Linux port of CMUCL.
+
+The CMUCL REPL does not have GNU Readline-like support, however
+you may wish to install rlwap (see: app-misc/rlwrap) to achieve
+the same effect.
+
+If you think you found a bug, please use http://bugs.gentoo.org/
+
+Read the documentation in /usr/share/doc/@PF@.
+
+\(quit) exit Lisp
+\(describe 'foo) gives information about foo
+\(inspect '*foo*) interactively inspects *foo*
+\(apropos \"foo\") briefly describe all symbols which match \"foo\"
+"))
diff --git a/dev-lisp/cmucl/metadata.xml b/dev-lisp/cmucl/metadata.xml
new file mode 100644
index 000000000000..d629fdce7003
--- /dev/null
+++ b/dev-lisp/cmucl/metadata.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+<email>common-lisp@gentoo.org</email>
+<name>Gentoo Common Lisp Project</name>
+</maintainer>
+<longdescription>
+CMUCL is a free implementation of the Common Lisp programming language
+which runs on most major Unix platforms. It mainly conforms to the
+ANSI Common Lisp standard. Here is a summary of its main features:
+
+ * a sophisticated native-code compiler which is capable of powerful
+ type inferences, and generates code competitive in speed with C
+ compilers.
+
+ * generational garbage collection and multiprocessing capability on
+ the x86 ports.
+
+ * a foreign function interface which allows interfacing with C code
+ and system libraries, including shared libraries on most platforms,
+ and direct access to Unix system calls.
+
+ * support for interprocess communication and remote procedure calls.
+
+ * an implementation of CLOS, the Common Lisp Object System, which
+ includes multimethods and a metaobject protocol.
+
+ * a graphical source-level debugger using a Motif interface, and a
+ code profiler.
+</longdescription>
+<use>
+<flag name="doc">Installs package documentation</flag>
+<flag name="source">Include source code for CMUCL in installation</flag>
+<flag name="X">Build CLX, CLM, or Hemlock</flag>
+</use>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/ecls/Manifest b/dev-lisp/ecls/Manifest
new file mode 100644
index 000000000000..25e997e45474
--- /dev/null
+++ b/dev-lisp/ecls/Manifest
@@ -0,0 +1,2 @@
+DIST ecl-16.1.3.tgz 7459212 BLAKE2B 4f9d6ad2bd92ede4b5b20857b95a48bad5002049e83611865d9cf13e7131adfaad147a31f22f9a3f6a2c06e46db1996aa98135c28b97bf5ef16e17b5eba0dc4b SHA512 5d743f422f6bc24671abf4c739cde8273d08f056906a1ef8aed5145c703b6d52c7fa4b5e0be8c125f32240c20ce053007786bb3ae81cc34d47791f6fae0819c1
+DIST ecl-20.4.24.tgz 7815444 BLAKE2B 11b908b028beaaf9243dc0f2ceaa178918ae4763a907af4424ba21e6bdf3474aaa36c96e9a3ef1ce780e50649c2453b52b7c46b5e9dc1453281dc522417ad78c SHA512 4c127e0d6a99e38f3a926135ae92d92899058c5a5e99b90f28d4a47b58d94ee89a958cfb4bfd2b9e6ad7b3c57867cd13119b2a4dd6bb1aa3bb5ec42a96bfa788
diff --git a/dev-lisp/ecls/ecls-16.1.3.ebuild b/dev-lisp/ecls/ecls-16.1.3.ebuild
new file mode 100644
index 000000000000..e59f26da8f2e
--- /dev/null
+++ b/dev-lisp/ecls/ecls-16.1.3.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils multilib
+
+# test phase only works if ecls already installed #516876
+RESTRICT="test"
+
+MY_P=ecl-${PV}
+
+DESCRIPTION="ECL is an embeddable Common Lisp implementation"
+HOMEPAGE="https://common-lisp.net/project/ecl/"
+SRC_URI="https://common-lisp.net/project/ecl/static/files/release/${MY_P}.tgz"
+
+LICENSE="BSD-2 LGPL-2.1+"
+SLOT="0/${PV}"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE="cxx debug emacs gengc precisegc cpu_flags_x86_sse +threads +unicode +libatomic X"
+
+CDEPEND="dev-libs/gmp:0
+ virtual/libffi
+ libatomic? ( dev-libs/libatomic_ops )
+ >=dev-libs/boehm-gc-7.1[threads?]
+ >=dev-lisp/asdf-2.33-r3:="
+DEPEND="${CDEPEND}
+ app-text/texi2html
+ emacs? ( >=app-editors/emacs-23.1:* >=app-eselect/eselect-emacs-1.12 )"
+RDEPEND="${CDEPEND}"
+
+S="${WORKDIR}"/${MY_P}
+
+PATCHES=(
+ "${FILESDIR}/${P}-headers-gentoo.patch"
+ "${FILESDIR}/${P}-build.patch"
+)
+
+pkg_setup() {
+ if use gengc || use precisegc ; then
+ ewarn "You have enabled the generational garbage collector or"
+ ewarn "the precise collection routines. These features are not very stable"
+ ewarn "at the moment and may cause crashes."
+ ewarn "Don't enable them unless you know what you're doing."
+ fi
+}
+
+src_prepare() {
+ default
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+}
+
+src_configure() {
+ econf \
+ --with-system-gmp \
+ --enable-boehm=system \
+ --enable-longdouble=yes \
+ --with-dffi \
+ $(use_with cxx) \
+ $(use_enable gengc) \
+ $(use_enable precisegc) \
+ $(use_with debug debug-cflags) \
+ $(use_enable libatomic libatomic system) \
+ $(use_with cpu_flags_x86_sse sse) \
+ $(use_enable threads) \
+ $(use_with threads __thread) \
+ $(use_enable unicode) \
+ $(use_with unicode unicode-names) \
+ $(use_with X x)
+}
+
+src_compile() {
+ if use emacs; then
+ local ETAGS=$(eselect --brief etags list | sed -ne '/emacs/{p;q}')
+ [[ -n ${ETAGS} ]] || die "No etags implementation found"
+ pushd build > /dev/null || die
+ emake ETAGS=${ETAGS} TAGS
+ popd > /dev/null
+ else
+ touch build/TAGS
+ fi
+
+ #parallel make fails
+ emake -j1
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ dodoc README.md CHANGELOG
+ dodoc "${FILESDIR}"/README.Gentoo
+ pushd build/doc
+ newman ecl.man ecl.1
+ newman ecl-config.man ecl-config.1
+ popd
+}
diff --git a/dev-lisp/ecls/ecls-20.4.24.ebuild b/dev-lisp/ecls/ecls-20.4.24.ebuild
new file mode 100644
index 000000000000..e00114ccd8bb
--- /dev/null
+++ b/dev-lisp/ecls/ecls-20.4.24.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils multilib
+
+# test phase only works if ecls already installed #516876
+RESTRICT="test"
+
+MY_P=ecl-${PV}
+
+DESCRIPTION="ECL is an embeddable Common Lisp implementation"
+HOMEPAGE="https://common-lisp.net/project/ecl/"
+SRC_URI="https://common-lisp.net/project/ecl/static/files/release/${MY_P}.tgz"
+
+LICENSE="BSD-2 LGPL-2.1+"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE="cxx debug emacs gengc precisegc cpu_flags_x86_sse +threads +unicode +libatomic X"
+
+CDEPEND="dev-libs/gmp:0
+ virtual/libffi
+ libatomic? ( dev-libs/libatomic_ops )
+ >=dev-libs/boehm-gc-7.1[threads?]
+ >=dev-lisp/asdf-2.33-r3:="
+DEPEND="${CDEPEND}
+ app-text/texi2html
+ emacs? ( >=app-editors/emacs-23.1:* >=app-eselect/eselect-emacs-1.12 )"
+RDEPEND="${CDEPEND}"
+
+S="${WORKDIR}"/${MY_P}
+
+PATCHES=(
+ "${FILESDIR}/${PN}-16.1.3-headers-gentoo.patch"
+ "${FILESDIR}/${PN}-16.1.3-build.patch"
+)
+
+pkg_setup() {
+ if use gengc || use precisegc ; then
+ ewarn "You have enabled the generational garbage collector or"
+ ewarn "the precise collection routines. These features are not very stable"
+ ewarn "at the moment and may cause crashes."
+ ewarn "Don't enable them unless you know what you're doing."
+ fi
+}
+
+src_prepare() {
+ default
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+}
+
+src_configure() {
+ econf \
+ --with-system-gmp \
+ --enable-boehm=system \
+ --enable-longdouble=yes \
+ --with-dffi \
+ $(use_with cxx) \
+ $(use_enable gengc) \
+ $(use_enable precisegc) \
+ $(use_with debug debug-cflags) \
+ $(use_enable libatomic libatomic system) \
+ $(use_with cpu_flags_x86_sse sse) \
+ $(use_enable threads) \
+ $(use_with threads __thread) \
+ $(use_enable unicode) \
+ $(use_with unicode unicode-names) \
+ $(use_with X x)
+}
+
+src_compile() {
+ if use emacs; then
+ local ETAGS=$(eselect --brief etags list | sed -ne '/emacs/{p;q}')
+ [[ -n ${ETAGS} ]] || die "No etags implementation found"
+ pushd build > /dev/null || die
+ emake ETAGS=${ETAGS} TAGS
+ popd > /dev/null
+ else
+ touch build/TAGS
+ fi
+
+ #parallel make fails
+ emake -j1
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ dodoc README.md CHANGELOG
+ dodoc "${FILESDIR}"/README.Gentoo
+ pushd build/doc
+ newman ecl.man ecl.1
+ newman ecl-config.man ecl-config.1
+ popd
+}
diff --git a/dev-lisp/ecls/files/README.Gentoo b/dev-lisp/ecls/files/README.Gentoo
new file mode 100644
index 000000000000..9bb82f220097
--- /dev/null
+++ b/dev-lisp/ecls/files/README.Gentoo
@@ -0,0 +1,15 @@
+-*- outline -*-
+
+Gentoo GNU/Linux specific notes for ECL
+---------------------------------------
+
+This is the README.Gentoo file from /usr/share/doc/@PF@/ directory.
+
+ * The Gentoo port includes a patch to ECL's installed header file (ech.h) so
+ that TRUE and FALSE are not redefined if they're already included from
+ elsewhere. This makes it easier to use ECL with other software which defines
+ those C preprocesser symbols (eg. glib-2.0).
+
+If you encounter any problems or have suggestions, use http://bugs.gentoo.org.
+Please don't bother the upstream authors unless you are absolutely certain it is
+not Gentoo-related.
diff --git a/dev-lisp/ecls/files/ecls-16.1.3-build.patch b/dev-lisp/ecls/files/ecls-16.1.3-build.patch
new file mode 100644
index 000000000000..ff7d6cd74d8b
--- /dev/null
+++ b/dev-lisp/ecls/files/ecls-16.1.3-build.patch
@@ -0,0 +1,10 @@
+diff -r -U2 ecl-16.1.3.orig/src/c/printer/write_sse.d ecl-16.1.3/src/c/printer/write_sse.d
+--- ecl-16.1.3.orig/src/c/printer/write_sse.d 2016-12-19 17:25:00.000000000 +0700
++++ ecl-16.1.3/src/c/printer/write_sse.d 2016-12-19 19:20:01.863563607 +0700
+@@ -13,4 +13,6 @@
+ */
+
++#include <ecl/config.h>
++
+ #ifdef ECL_SSE2
+ #include <ecl/ecl.h>
diff --git a/dev-lisp/ecls/files/ecls-16.1.3-headers-gentoo.patch b/dev-lisp/ecls/files/ecls-16.1.3-headers-gentoo.patch
new file mode 100644
index 000000000000..10802aa48803
--- /dev/null
+++ b/dev-lisp/ecls/files/ecls-16.1.3-headers-gentoo.patch
@@ -0,0 +1,15 @@
+diff -r -U2 ecl-16.1.3.orig/src/h/object.h ecl-16.1.3/src/h/object.h
+--- ecl-16.1.3.orig/src/h/object.h 2016-12-19 17:25:00.000000000 +0700
++++ ecl-16.1.3/src/h/object.h 2016-12-19 19:22:21.147557750 +0700
+@@ -26,6 +26,11 @@
+ */
+
++#ifndef TRUE
+ #define TRUE 1 /* boolean true value */
++#endif
++
++#ifndef FALSE
+ #define FALSE 0 /* boolean false value */
++#endif
+
+ #if !defined(__cplusplus) && !defined(bool)
diff --git a/dev-lisp/ecls/metadata.xml b/dev-lisp/ecls/metadata.xml
new file mode 100644
index 000000000000..2c25c38bd53a
--- /dev/null
+++ b/dev-lisp/ecls/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription>
+ECL (Embeddable Common Lisp) is an implementation of the Common Lisp language as
+described in the X3J13 Ansi specification, featuring CLOS (Common Lisp Object
+System), conditions, loops, etc, plus a translator to C, which can produce
+standalone executables.
+</longdescription>
+ <use>
+ <flag name="gengc">Use generational garbage collection (experimental)</flag>
+ <flag name="precisegc">Use type information during garbage collection (experimental)</flag>
+ <flag name="libatomic">Use <pkg>dev-libs/libatomic_ops</pkg> library</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">ecls</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/flexi-streams/Manifest b/dev-lisp/flexi-streams/Manifest
new file mode 100644
index 000000000000..0c149de3b037
--- /dev/null
+++ b/dev-lisp/flexi-streams/Manifest
@@ -0,0 +1,2 @@
+DIST flexi-streams-1.0.16.tar.gz 135698 BLAKE2B 9d6d5b064f10d27ce60d5a8a6792b7c36e63d393f64c98148bfd9addd36483e1e4d9e2b699c0ae151c55d88e01bd86fea3197e082b001face2c44206229c3e21 SHA512 66b7c5231616c7a6095a52d6c679717795c9308e33487536a5e1b7f0d25f26aacd2579a76c351f8e16a967a0611456cbc97b3824f4d9cf4875b8e48b0c4f7c78
+DIST flexi-streams-1.0.17.tar.gz 135883 BLAKE2B 96670bffc8b53196d2138bff6bdcaaae74d3a9318bb637cb52914de0905be86d3d5ce40ed3f5f87deec75cbad609d339fc0656f8542ee05edae5c9c342430a90 SHA512 58a19214f74e00948dd5c15453cb68a65ad600a78fd7b637018914446a3953f68efa5e229b3d27e93464d8f273e82aa71d0fafe9b2ace77e40d23c5aea756d49
diff --git a/dev-lisp/flexi-streams/flexi-streams-1.0.16.ebuild b/dev-lisp/flexi-streams/flexi-streams-1.0.16.ebuild
new file mode 100644
index 000000000000..f9d5b59764d1
--- /dev/null
+++ b/dev-lisp/flexi-streams/flexi-streams-1.0.16.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="Flexible bivalent streams for Common Lisp"
+HOMEPAGE="http://weitz.de/flexi-streams/
+ http://www.cliki.net/flexi-streams/"
+SRC_URI="https://github.com/edicl/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE=""
+
+RDEPEND="!dev-lisp/cl-${PN}
+ >=dev-lisp/trivial-gray-streams-20060925"
+
+src_install() {
+ common-lisp-install-sources *.lisp
+ common-lisp-install-asdf
+ dodoc doc/index.html
+}
diff --git a/dev-lisp/flexi-streams/flexi-streams-1.0.17.ebuild b/dev-lisp/flexi-streams/flexi-streams-1.0.17.ebuild
new file mode 100644
index 000000000000..672410b9b419
--- /dev/null
+++ b/dev-lisp/flexi-streams/flexi-streams-1.0.17.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="Flexible bivalent streams for Common Lisp"
+HOMEPAGE="http://weitz.de/flexi-streams/
+ http://www.cliki.net/flexi-streams/"
+SRC_URI="https://github.com/edicl/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+IUSE=""
+
+RDEPEND="!dev-lisp/cl-${PN}
+ >=dev-lisp/trivial-gray-streams-20060925"
+
+src_install() {
+ common-lisp-install-sources *.lisp
+ common-lisp-install-asdf
+ dodoc docs/index.html
+}
diff --git a/dev-lisp/flexi-streams/metadata.xml b/dev-lisp/flexi-streams/metadata.xml
new file mode 100644
index 000000000000..bc625fc0f713
--- /dev/null
+++ b/dev-lisp/flexi-streams/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ FLEXI-STREAMS implements "virtual" bivalent streams that can be
+ layered atop real binary or bivalent streams and that can be used
+ to read and write character data in various single- or multi-octet
+ encodings which can be changed on the fly. It also supplies
+ in-memory binary streams which are similar to string streams.
+ </longdescription>
+ <longdescription lang="es">
+ FLEXI-STREAMS implementa flujos de datos bivalentes "virtuales"
+ que se pueden superponer a flujos de datos binarios reales o
+ bivalentes y que pueden ser utilizados para leer y escribir datos
+ en caracteres en distintas codificaciones sencillas o multi-octeto
+ que a su vez se pueden cambiar al vuelo. También proporciona flujos
+ de datos en memoria que son similares a los flujos de datos de
+ cadenas de caracteres.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">edicl/flexi-streams</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/gcl/Manifest b/dev-lisp/gcl/Manifest
new file mode 100644
index 000000000000..9694d801852c
--- /dev/null
+++ b/dev-lisp/gcl/Manifest
@@ -0,0 +1,4 @@
+DIST gcl-2.6.10-fedora.tar.bz2 695718 BLAKE2B 151cac372f74a971ffb31191a3614d0f7bafca141258af9e1955185f8ed119cbcd3797f2d9bbe5eb5f82e76af4fd0d3e0cf155cd35f305a2c028e40b340b78cf SHA512 3e0ffaec859783443a8941a29302c7a17c9538ef2177d449ad34e24292c174de7bb8760a6d327e08f012773032f0d0a5230b79c7e4b4f5bad8354bf10a28af4c
+DIST gcl-2.6.10.tar.gz 5490689 BLAKE2B 46af0cf8a810a82fe2bc2bd46ca1cbe17b74c71eb4af6a06032040900dcad4dd4338883cd9225f0945ae425eba788ac84db9a0ed454779edd86c74a1bb48a947 SHA512 bbaacce712f15130550bcdf7e53edf4df9ab955e84ec701087034115df1c1e657d956853d5db85d7e88709981f9b7fd4c9df7acf6c8588a8ccf5f05e4e666aed
+DIST gcl-2.6.12-fedora.tar.bz2 680471 BLAKE2B 0ad96ce0a09bb73ee77456373eb7e50b2325a4f2e042c21120a1c33b2dec2aa10f5485bb1b02e8eb8e77aaaea6e141189d676217f9d139615911d8a77ea5818a SHA512 7640f8370754c889e2db9d047c4476195f949f4d97eafc7ef81761c1a548e24125d6d93381227b55f1840c3d127770995e88bf66f83c6952e121f5fa004e7f1a
+DIST gcl-2.6.12.tar.gz 7031837 BLAKE2B afd3f81dd8a712d92883a96399a2e0621b0d38a349904707846bd694892510012fde27f94ec36664c249659a480e7f92c412b3790ecb74247a91ba0cb44aa420 SHA512 e82b5bdded6f846de4ea35a83bc8294043ba6d4fe03ff421f8753e78add1e5e87124782f672cd38ad89bbec1ca7c5ff69fe2621be1552b209516b58b6c97fd20
diff --git a/dev-lisp/gcl/files/64gcl-gentoo.el b/dev-lisp/gcl/files/64gcl-gentoo.el
new file mode 100644
index 000000000000..7b7cee00bac8
--- /dev/null
+++ b/dev-lisp/gcl/files/64gcl-gentoo.el
@@ -0,0 +1,5 @@
+;; site-init for dev-lisp/gcl
+(add-to-list 'load-path "@SITELISP@")
+(autoload 'run "gcl" "Run GCL." t)
+(autoload 'gcl-mode "gcl" "GCL mode." t)
+(autoload 'dbl "dbl" "GCL debugger." t)
diff --git a/dev-lisp/gcl/files/bootstrap-gcl b/dev-lisp/gcl/files/bootstrap-gcl
new file mode 100644
index 000000000000..cf964c4b5bea
--- /dev/null
+++ b/dev-lisp/gcl/files/bootstrap-gcl
@@ -0,0 +1,7 @@
+(compiler::emit-fn t)
+(compiler::link nil "bootstrapped_ansi_gcl"
+ (format nil "(progn (let ((*load-path* (cons ~S *load-path*))
+ (si::*load-types* ~S)) (compiler::emit-fn t)) (when (fboundp (quote
+ si::sgc-on)) (si::sgc-on t)) (setq compiler::*default-system-p* t))"
+ si::*system-directory* (quote (list ".lsp")))
+ "-lutil")
diff --git a/dev-lisp/gcl/files/gcl-2.6.12-gcc5.patch b/dev-lisp/gcl/files/gcl-2.6.12-gcc5.patch
new file mode 100644
index 000000000000..07d3892eb0b6
--- /dev/null
+++ b/dev-lisp/gcl/files/gcl-2.6.12-gcc5.patch
@@ -0,0 +1,8 @@
+diff -r -U1 gcl.orig/makefile gcl/makefile
+--- gcl.orig/makefile 2014-10-23 23:29:00.000000000 +0200
++++ gcl/makefile 2016-02-17 18:10:29.871808118 +0100
+@@ -267,3 +267,3 @@
+ $(AWK) 'BEGIN {print "#include \"include.h\"";print "#include \"cmponly.h\"";print "---"} {a=$$1;gsub("\\.\\.\\.","",a);print "\"#define " $$1 "\" " a}' $< |\
+- $(CC) -E -I./$(HDIR) - |\
++ $(CC) -E -P -I./$(HDIR) - |\
+ $(AWK) '/^\-\-\-$$/ {i=1;next} {if (!i) next} {gsub("\"","");print}' >$@
diff --git a/dev-lisp/gcl/files/gcl-gmp-6.patch b/dev-lisp/gcl/files/gcl-gmp-6.patch
new file mode 100644
index 000000000000..f66638478af1
--- /dev/null
+++ b/dev-lisp/gcl/files/gcl-gmp-6.patch
@@ -0,0 +1,8 @@
+diff -r -U1 gcl.orig/configure gcl/configure
+--- gcl.orig/configure 2013-11-11 21:55:48.000000000 +0700
++++ gcl/configure 2014-03-30 17:25:04.874994142 +0700
+@@ -5027,3 +5027,3 @@
+ int main() {
+- #if __GNU_MP_VERSION == 4 || __GNU_MP_VERSION == 5
++ #if __GNU_MP_VERSION == 4 || __GNU_MP_VERSION == 5 || __GNU_MP_VERSION == 6
+ return 0;
diff --git a/dev-lisp/gcl/files/gcl-readline-6.3.patch b/dev-lisp/gcl/files/gcl-readline-6.3.patch
new file mode 100644
index 000000000000..063c772f1051
--- /dev/null
+++ b/dev-lisp/gcl/files/gcl-readline-6.3.patch
@@ -0,0 +1,18 @@
+diff -r -U1 gcl.orig/o/gcl_readline.d gcl/o/gcl_readline.d
+--- gcl.orig/o/gcl_readline.d 2013-11-11 21:55:48.000000000 +0700
++++ gcl/o/gcl_readline.d 2014-03-30 18:29:42.131967005 +0700
+@@ -53,2 +53,9 @@
+
++/* Deprecated CPPFunction disappeared in libreadline-6.3 */
++#if defined(_RL_FUNCTION_TYPEDEF)
++#define RL_COMPLETION_FUNC_T rl_completion_func_t
++#else
++#define RL_COMPLETION_FUNC_T CPPFunction
++#endif
++
+ int readline_on = 0; /* On (1) or off (0) */
+@@ -471,3 +478,3 @@
+ #ifdef RL_COMPLETION
+- rl_attempted_completion_function = (CPPFunction *)rl_completion;
++ rl_attempted_completion_function = (RL_COMPLETION_FUNC_T *)rl_completion;
+ #endif
diff --git a/dev-lisp/gcl/files/gcl-tcl-8.6.patch b/dev-lisp/gcl/files/gcl-tcl-8.6.patch
new file mode 100644
index 000000000000..cfbf82e32899
--- /dev/null
+++ b/dev-lisp/gcl/files/gcl-tcl-8.6.patch
@@ -0,0 +1,103 @@
+diff --git a/gcl/gcl-tk/tkMain.c b/gcl/gcl-tk/tkMain.c
+index 74475cc..21c6c59 100755
+--- a/gcl/gcl-tk/tkMain.c
++++ b/gcl/gcl-tk/tkMain.c
+@@ -42,6 +42,11 @@
+ #if (TK_MINOR_VERSION==0 && TK_MAJOR_VERSION==4)
+ #define TkCreateMainWindow Tk_CreateMainWindow
+ #endif
++#if TCL_MAJOR_VERSION >= 8
++#define INTERP_RESULT(interp) Tcl_GetStringResult(interp)
++#else
++#define INTERP_RESULT(interp) (interp)->result
++#endif
+
+
+ /*-------------------------------------------------------------------*/
+@@ -276,7 +281,7 @@ TkX_Wish (argc, argv)
+
+ if (Tk_ParseArgv(interp, (Tk_Window) NULL, &argc, (void *)argv, argTable, 0)
+ != TCL_OK) {
+- fprintf(stderr, "%s\n", interp->result);
++ fprintf(stderr, "%s\n", INTERP_RESULT(interp));
+ exit(1);
+ }
+ if (name == NULL) {
+@@ -309,7 +314,7 @@ TkX_Wish (argc, argv)
+
+ /* mainWindow = TkCreateMainWindow(interp, display, name/\* , "Tk" *\/); */
+ /* if (mainWindow == NULL) { */
+-/* fprintf(stderr, "%s\n", interp->result); */
++/* fprintf(stderr, "%s\n", INTERP_RESULT(interp)); */
+ /* exit(1); */
+ /* } */
+ /* #ifndef __MINGW32__ */
+@@ -362,7 +367,7 @@ TkX_Wish (argc, argv)
+ Tcl_FindExecutable ( argv[0] );
+ #else
+ if (Tcl_AppInit(interp) != TCL_OK) {
+- fprintf(stderr, "Tcl_AppInit failed: %s\n", interp->result);
++ fprintf(stderr, "Tcl_AppInit failed: %s\n", INTERP_RESULT(interp));
+ }
+ #endif
+ /*
+@@ -372,7 +377,7 @@ TkX_Wish (argc, argv)
+ if (geometry != NULL) {
+ code = Tcl_VarEval(interp, "wm geometry . ", geometry, (char *) NULL);
+ if (code != TCL_OK) {
+- fprintf(stderr, "%s\n", interp->result);
++ fprintf(stderr, "%s\n", INTERP_RESULT(interp));
+ }
+ }
+
+@@ -402,13 +407,13 @@ TkX_Wish (argc, argv)
+
+ fullName = Tcl_TildeSubst(interp, tcl_RcFileName, &buffer);
+ if (fullName == NULL) {
+- fprintf(stderr, "%s\n", interp->result);
++ fprintf(stderr, "%s\n", INTERP_RESULT(interp));
+ } else {
+ f = fopen(fullName, "r");
+ if (f != NULL) {
+ code = Tcl_EvalFile(interp, fullName);
+ if (code != TCL_OK) {
+- fprintf(stderr, "%s\n", interp->result);
++ fprintf(stderr, "%s\n", INTERP_RESULT(interp));
+ }
+ fclose(f);
+ }
+@@ -443,7 +448,7 @@ TkX_Wish (argc, argv)
+ error:
+ msg = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
+ if (msg == NULL) {
+- msg = interp->result;
++ msg = INTERP_RESULT(interp);
+ }
+ dfprintf(stderr, "%s\n", msg);
+ Tcl_Eval(interp, errorExitCmd);
+@@ -566,13 +571,13 @@ StdinProc(clientData, mask)
+ || code)
+ {
+ char buf[4];
+- char *p = buf;
++ char *p = buf, *string;
+ /*header */
+ *p++ = (code ? '1' : '0');
+ bcopy(msg->msg_id,p,3);
+ /* end header */
+- if(sock_write_str2(dsfd, m_reply, buf, 4 ,
+- interp->result, strlen(interp->result))
++ string = INTERP_RESULT(interp);
++ if(sock_write_str2(dsfd, m_reply, buf, 4, string, strlen(string))
+ < 0)
+ { /* what do we want to do if the write failed */}
+
+@@ -752,7 +757,7 @@ guiBindCallback(char *szNameCmdProc, char *szTclObject, char *szModifier,char* a
+ code = Tcl_Eval(interp, szCmd);
+ if (code != TCL_OK)
+ {
+- dfprintf(stderr, "TCL Error int bind : %s\n", interp->result);
++ dfprintf(stderr, "TCL Error int bind : %s\n", INTERP_RESULT(interp));
+
+ }
+ return code;
diff --git a/dev-lisp/gcl/gcl-2.6.10.ebuild b/dev-lisp/gcl/gcl-2.6.10.ebuild
new file mode 100644
index 000000000000..f81aa30e4b62
--- /dev/null
+++ b/dev-lisp/gcl/gcl-2.6.10.ebuild
@@ -0,0 +1,153 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit elisp-common eutils flag-o-matic
+
+DESCRIPTION="GNU Common Lisp"
+HOMEPAGE="https://www.gnu.org/software/gcl/gcl.html"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz https://dev.gentoo.org/~grozin/${P}-fedora.tar.bz2"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm x86"
+IUSE="+ansi athena emacs +readline tk X"
+
+# See bug #205803
+RESTRICT="strip"
+
+RDEPEND="emacs? ( >=app-editors/emacs-23.1:* )
+ readline? ( sys-libs/readline:= )
+ athena? ( x11-libs/libXaw )
+ >=dev-libs/gmp-4.1:=
+ tk? ( dev-lang/tk:= )
+ X? ( x11-libs/libXt x11-libs/libXext x11-libs/libXmu x11-libs/libXaw )
+ virtual/latex-base"
+DEPEND="${RDEPEND}
+ virtual/texi2dvi
+ >=app-text/texi2html-1.64
+ >=sys-devel/autoconf-2.52"
+
+S="${WORKDIR}"/${PN}
+
+src_prepare() {
+ mv "${WORKDIR}"/fedora/info/* info/
+ cp -p /usr/share/texmf-dist/tex/texinfo/texinfo.tex info/
+ find . -type f -perm /0111 | xargs chmod a-x
+ chmod a+x add-defs add-defs1 config.guess config.sub configure install.sh
+ chmod a+x bin/info bin/info1 gcl-tk/gcltksrv.in gcl-tk/ngcltksrv mp/gcclab
+ chmod a+x o/egrep-def utils/replace xbin/*
+
+ # fedora patches
+ epatch "${WORKDIR}"/fedora/fd-leak.patch
+ epatch "${WORKDIR}"/fedora/latex.patch
+ epatch "${WORKDIR}"/fedora/texinfo.patch
+ epatch "${WORKDIR}"/fedora/elisp.patch
+ epatch "${WORKDIR}"/fedora/rename.patch
+ epatch "${WORKDIR}"/fedora/getcwd.patch
+ epatch "${WORKDIR}"/fedora/infrastructure.patch
+ epatch "${WORKDIR}"/fedora/extension.patch
+ epatch "${WORKDIR}"/fedora/unrandomize.patch
+ epatch "${WORKDIR}"/fedora/asm-signal-h.patch
+ epatch "${WORKDIR}"/fedora/plt.patch
+ epatch "${WORKDIR}"/fedora/ellipsis.patch
+ epatch "${WORKDIR}"/fedora/man.patch
+ epatch "${WORKDIR}"/fedora/reloc-type.patch
+ epatch "${WORKDIR}"/fedora/largefile.patch
+
+ epatch "${FILESDIR}"/${PN}-tcl-8.6.patch
+ epatch "${FILESDIR}"/${PN}-gmp-6.patch
+ epatch "${FILESDIR}"/${PN}-readline-6.3.patch
+
+ sed -e 's|"-fomit-frame-pointer"|""|' -i configure
+ sed -e 's|@EXT@||g' debian/in.gcl.1 > gcl.1
+}
+
+src_configure() {
+ strip-flags
+ filter-flags -fstack-protector -fstack-protector-all
+
+ local tcl=""
+ if use tk; then
+ tcl="--enable-tclconfig=/usr/lib --enable-tkconfig=/usr/lib"
+ fi
+
+ econf --enable-dynsysgmp \
+ --disable-xdr \
+ --enable-emacsdir=/usr/share/emacs/site-lisp/gcl \
+ --enable-infodir=/usr/share/info \
+ $(use_enable readline) \
+ $(use_enable ansi) \
+ $(use_enable athena xgcl) \
+ $(use_with X x) \
+ ${tcl}
+}
+
+src_compile() {
+ emake -j1
+ VARTEXFONTS="${T}"/fonts emake -C info gcl.info
+ if use athena; then
+ pushd xgcl-2 > /dev/null
+ pdflatex dwdoc.tex
+ popd > /dev/null
+ fi
+}
+
+src_test() {
+ local make_ansi_tests_clean="rm -f test.out *.fasl *.o *.so *~ *.fn *.x86f *.fasl *.ufsl"
+ if use ansi; then
+ cd ansi-tests
+
+ ( make clean && make test-unixport ) \
+ || die "make ansi-tests failed!"
+
+ cat "${FILESDIR}/bootstrap-gcl" \
+ | ../unixport/saved_ansi_gcl
+
+ cat "${FILESDIR}/bootstrap-gcl" \
+ |sed s/bootstrapped_ansi_gcl/bootstrapped_r_ansi_gcl/g \
+ | ./bootstrapped_ansi_gcl
+
+ ( ${make_ansi_tests_clean} && \
+ echo "(load \"gclload.lsp\")" \
+ | ./bootstrapped_r_ansi_gcl ) \
+ || die "Phase 2, bootstraped compiler failed in tests"
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ mv "${D}"usr/share/doc/*.dvi .
+ rm -rf "${D}"usr/share/doc
+ rm -rf "${D}"usr/share/emacs
+ rm -rf "${D}"usr/lib/gcl-*/info
+
+ rm doc/makefile elisp/add-defaults.el
+ dodoc readme* RELEASE* ChangeLog* doc/*
+ doman gcl.1
+ doinfo info/*.info*
+ dohtml -r info/gcl-si info/gcl-tk
+
+ if use emacs; then
+ elisp-site-file-install "${FILESDIR}"/64${PN}-gentoo.el
+ elisp-install ${PN} elisp/*.el
+ fi
+
+ insinto /usr/share/doc/${PF}
+ doins *.dvi
+ if use athena; then
+ pushd xgcl-2 > /dev/null
+ insinto /usr/share/doc/${PF}
+ doins *.pdf
+ popd > /dev/null
+ fi
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-lisp/gcl/gcl-2.6.12.ebuild b/dev-lisp/gcl/gcl-2.6.12.ebuild
new file mode 100644
index 000000000000..a0d0b117f64e
--- /dev/null
+++ b/dev-lisp/gcl/gcl-2.6.12.ebuild
@@ -0,0 +1,149 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+inherit elisp-common eutils flag-o-matic
+
+DESCRIPTION="GNU Common Lisp"
+HOMEPAGE="https://www.gnu.org/software/gcl/gcl.html"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz https://dev.gentoo.org/~grozin/${P}-fedora.tar.bz2"
+
+LICENSE="LGPL-2 GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
+IUSE="+ansi athena emacs +readline tk X"
+
+# See bug #205803
+RESTRICT="strip"
+
+RDEPEND="emacs? ( >=app-editors/emacs-23.1:* )
+ readline? ( sys-libs/readline:= )
+ athena? ( x11-libs/libXaw )
+ >=dev-libs/gmp-4.1:=
+ tk? ( dev-lang/tk:= )
+ X? ( x11-libs/libXt x11-libs/libXext x11-libs/libXmu x11-libs/libXaw )
+ virtual/latex-base"
+DEPEND="${RDEPEND}
+ virtual/texi2dvi
+ >=app-text/texi2html-1.64
+ >=sys-devel/autoconf-2.52"
+
+S="${WORKDIR}"/${PN}
+
+src_prepare() {
+ mv "${WORKDIR}"/fedora/info/* info/
+ cp -p /usr/share/texmf-dist/tex/texinfo/texinfo.tex info/
+ find . -type f -perm /0111 | xargs chmod a-x
+ chmod a+x add-defs add-defs1 config.guess config.sub configure install.sh
+ chmod a+x bin/info bin/info1 gcl-tk/gcltksrv.in gcl-tk/ngcltksrv mp/gcclab
+ chmod a+x o/egrep-def utils/replace xbin/*
+ epatch "${FILESDIR}"/${P}-gcc5.patch
+
+ # fedora patches
+ epatch "${WORKDIR}"/fedora/fd-leak.patch
+ epatch "${WORKDIR}"/fedora/latex.patch
+ epatch "${WORKDIR}"/fedora/texinfo.patch
+ epatch "${WORKDIR}"/fedora/elisp.patch
+ epatch "${WORKDIR}"/fedora/selinux.patch
+ epatch "${WORKDIR}"/fedora/rename.patch
+ epatch "${WORKDIR}"/fedora/getcwd.patch
+ epatch "${WORKDIR}"/fedora/plt.patch
+ epatch "${WORKDIR}"/fedora/ellipsis.patch
+ epatch "${WORKDIR}"/fedora/infrastructure.patch
+ epatch "${WORKDIR}"/fedora/extension.patch
+ epatch "${WORKDIR}"/fedora/unrandomize.patch
+ epatch "${WORKDIR}"/fedora/asm-signal-h.patch
+ epatch "${WORKDIR}"/fedora/largefile.patch
+ epatch "${WORKDIR}"/fedora/arm.patch
+
+ epatch_user
+
+ sed -e 's|"-fomit-frame-pointer"|""|' -i configure
+}
+
+src_configure() {
+ strip-flags
+ filter-flags -fstack-protector -fstack-protector-all
+ append-cflags $(test-flags-CC -fgnu89-inline)
+
+ local tcl=""
+ if use tk; then
+ tcl="--enable-tclconfig=/usr/lib --enable-tkconfig=/usr/lib"
+ fi
+
+ econf --enable-dynsysgmp \
+ --disable-xdr \
+ --enable-emacsdir=/usr/share/emacs/site-lisp/gcl \
+ --enable-infodir=/usr/share/info \
+ $(use_enable readline) \
+ $(use_enable ansi) \
+ $(use_enable athena xgcl) \
+ $(use_with X x) \
+ ${tcl}
+}
+
+src_compile() {
+ emake -j1
+ VARTEXFONTS="${T}"/fonts emake -C info gcl.info
+ if use athena; then
+ pushd xgcl-2 > /dev/null
+ pdflatex dwdoc.tex
+ popd > /dev/null
+ fi
+}
+
+src_test() {
+ local make_ansi_tests_clean="rm -f test.out *.fasl *.o *.so *~ *.fn *.x86f *.fasl *.ufsl"
+ if use ansi; then
+ cd ansi-tests
+
+ ( make clean && make test-unixport ) \
+ || die "make ansi-tests failed!"
+
+ cat "${FILESDIR}/bootstrap-gcl" \
+ | ../unixport/saved_ansi_gcl
+
+ cat "${FILESDIR}/bootstrap-gcl" \
+ |sed s/bootstrapped_ansi_gcl/bootstrapped_r_ansi_gcl/g \
+ | ./bootstrapped_ansi_gcl
+
+ ( ${make_ansi_tests_clean} && \
+ echo "(load \"gclload.lsp\")" \
+ | ./bootstrapped_r_ansi_gcl ) \
+ || die "Phase 2, bootstraped compiler failed in tests"
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ rm -rf "${D}"usr/share/doc
+ rm -rf "${D}"usr/share/emacs
+
+ rm elisp/add-defaults.el
+ dodoc readme* RELEASE* ChangeLog* doc/*
+ doman man/man1/gcl.1
+ doinfo info/*.info*
+ dohtml -r info/gcl-si info/gcl-tk
+
+ if use emacs; then
+ elisp-site-file-install "${FILESDIR}"/64${PN}-gentoo.el
+ elisp-install ${PN} elisp/*.el
+ fi
+
+ insinto /usr/share/doc/${PF}
+ doins info/*.pdf
+ if use athena; then
+ pushd xgcl-2 > /dev/null
+ insinto /usr/share/doc/${PF}
+ doins *.pdf
+ popd > /dev/null
+ fi
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-lisp/gcl/metadata.xml b/dev-lisp/gcl/metadata.xml
new file mode 100644
index 000000000000..b59b12a42b40
--- /dev/null
+++ b/dev-lisp/gcl/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription>
+ GCL is the official Common Lisp for the GNU project. Its design
+ makes use of the system's C compiler to compile to native object
+ code, providing for both good performance and facile portability.
+ </longdescription>
+ <use>
+ <flag name="ansi">Build a GCL with ANSI support (else build a traditional CLtL1 image)</flag>
+ <flag name="athena">Build xgcl - an interface to <pkg>x11-libs/libXaw</pkg></flag>
+ </use>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/hyperspec/Manifest b/dev-lisp/hyperspec/Manifest
new file mode 100644
index 000000000000..bcc13f2d0e01
--- /dev/null
+++ b/dev-lisp/hyperspec/Manifest
@@ -0,0 +1 @@
+DIST HyperSpec-7-0.tar.gz 2032830 BLAKE2B ec72b57fdcf669fe400dc2729191cc7c387172035d0663816fcc18450543052d3a958bd9042ef67bc70a1ccb07e74b189d32e1c790cdd1b721e8d74a6a88412d SHA512 1b9058fe1ae2e283f4a68211dc659021e04bd10373d7c2392f4fa496543e2454f96c7eb671bcb1e72c906456792f8a265a5e34bac24d01e2c0e7fb1ce359c370
diff --git a/dev-lisp/hyperspec/hyperspec-7.0-r1.ebuild b/dev-lisp/hyperspec/hyperspec-7.0-r1.ebuild
new file mode 100644
index 000000000000..845fb390fddb
--- /dev/null
+++ b/dev-lisp/hyperspec/hyperspec-7.0-r1.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+MY_PV=${PV/./-}
+MY_P=HyperSpec-${MY_PV}
+
+DESCRIPTION="Common Lisp ANSI-standard Hyperspec"
+HOMEPAGE="http://www.lispworks.com/reference/HyperSpec/"
+SRC_URI="ftp://ftp.lispworks.com/pub/software_tools/reference/${MY_P}.tar.gz"
+LICENSE="HyperSpec"
+SLOT="0"
+KEYWORDS="amd64 ppc sparc x86"
+IUSE=""
+DEPEND=""
+
+S=${WORKDIR}/
+
+src_install() {
+ dodir /usr/share/doc/${P}
+ cp -r HyperSpec* "${D}/usr/share/doc/${P}"
+ dosym /usr/share/doc/${P} /usr/share/doc/hyperspec
+}
diff --git a/dev-lisp/hyperspec/metadata.xml b/dev-lisp/hyperspec/metadata.xml
new file mode 100644
index 000000000000..136dc046ea75
--- /dev/null
+++ b/dev-lisp/hyperspec/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+</maintainer>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/metadata.xml b/dev-lisp/metadata.xml
new file mode 100644
index 000000000000..6258c8c7b1b4
--- /dev/null
+++ b/dev-lisp/metadata.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE catmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<catmetadata>
+ <longdescription lang="en">
+ The dev-lisp category contains libraries and utilities relevant to the
+ Lisp programming language.
+ </longdescription>
+ <longdescription lang="de">
+ Die Kategorie dev-lisp enthält Bibliotheken und Werkzeuge für die
+ Programmiersprache Lisp.
+ </longdescription>
+ <longdescription lang="es">
+ La categoría dev-lisp contiene librerias y utilidades referentes al
+ lenguaje de programación Lisp.
+ </longdescription>
+ <longdescription lang="ja">
+ dev-lisp カテゴリーにはLispプログラミング言語に関連したライブラリーと
+ ユーティリティが含まれます。
+ </longdescription>
+ <longdescription lang="nl">
+ De dev-lisp categorie bevat bibliotheken en hulpmiddelen voor het gebruik
+ van de programmeertaal Lisp.
+ </longdescription>
+ <longdescription lang="vi">
+ Nhóm dev-lisp chứa các thư viện và tiện ích liên quan
+ đến ngôn ngữ lập trình Lisp.
+ </longdescription>
+ <longdescription lang="it">
+ La categoria dev-lisp contiene librerie ed utilità per il linguaggio di programmazione Lisp.
+ </longdescription>
+ <longdescription lang="pt">
+ A categoria dev-lisp contém bibliotecas e utilitários referentes
+ à linguagem de programação Lisp.
+ </longdescription>
+ <longdescription lang="pl">
+ Kategoria dev-lisp zawiera biblioteki i narzędzia związane z
+ językiem programowania Lisp.
+ </longdescription>
+</catmetadata>
+
diff --git a/dev-lisp/roswell/Manifest b/dev-lisp/roswell/Manifest
new file mode 100644
index 000000000000..eab908fe853e
--- /dev/null
+++ b/dev-lisp/roswell/Manifest
@@ -0,0 +1,4 @@
+DIST roswell-19.08.10.101.tar.gz 163259 BLAKE2B 80080a7d2665fd674281ae8af7ac735e8ebfa142cb2beac93e9536ab0251d654ce6f18e329b06bb1e8bb3a233ab15b42c35e544b4d2b9c87229d9290403cec31 SHA512 6a7dde53ba5f0793e3f5dac780265e1a88d35a0d4a2388fec6ecafde0904a36db222a3cfe867ae5bd90f38f08a5da09941182e72f81184bfd7f084d927e63ce3
+DIST roswell-19.09.12.102.tar.gz 164475 BLAKE2B 432a9aae8a2f2caa4b7c996829daff1e6a8807cccf936bf7d9aefc69e8842b73b355aede1213ed8ad3e2f3ed093fbb33f0d4f48c991ad4ae5dc3f919d5ea7c38 SHA512 04f6db828c81b7e6310c612e4a3fcd0d0abe6e9dbac794f78f9830902c8b8ad02bda7ff313edfebfd31fa299b2553f258dc82307ccdaf025b9eef2a13e93de54
+DIST roswell-19.12.13.103.tar.gz 165717 BLAKE2B 9d38deab38154146ebba80ce4efdcc99c2d4ced312cad5a04ba44bc1bf5f10cb3c83bbbccdbdb842f0ef92e7d20b7073973d4f7f3438e732987cfcff8ec4386a SHA512 3f7180843e81108ff026df6ead5541325dc622027483c2a33069020bdc90916c263a73ec40ead5ab0af2566967aa2a4cb8db2ece962465e7b0a41e4a6809335a
+DIST roswell-20.01.14.104.tar.gz 164384 BLAKE2B 905bb54081da137c588b911f1aa6ef4957e9d860c9d42b72bcda37b084d4049c4234a757514170e2a857de40c4970d70e53e98d72bbeb037e5c35930fbd9286b SHA512 8eac3ada8afb9f2ee82004e46fcee72e45cfd2ed4e86dea8892ff6fa0bb5339bca7e3d1d4a7e2930d6848ef1bf1ef4b63aa576382bee1e66e98cf50441c81c7e
diff --git a/dev-lisp/roswell/metadata.xml b/dev-lisp/roswell/metadata.xml
new file mode 100644
index 000000000000..04e8580aeb43
--- /dev/null
+++ b/dev-lisp/roswell/metadata.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sheepduke@gmail.com</email>
+ <name>YUE Daian</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription>
+ Roswell is the de facto full-stack environment for Common Lisp
+ development. It serves as a Lisp implementation installer, manager,
+ launcher etc.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">roswell/roswell</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/roswell/roswell-19.08.10.101.ebuild b/dev-lisp/roswell/roswell-19.08.10.101.ebuild
new file mode 100644
index 000000000000..11cdfe7deea0
--- /dev/null
+++ b/dev-lisp/roswell/roswell-19.08.10.101.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="A lisp installer and launcher for major environment"
+HOMEPAGE="https://github.com/roswell/roswell"
+SRC_URI="https://github.com/roswell/roswell/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="!net-libs/librouteros"
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/dev-lisp/roswell/roswell-19.09.12.102.ebuild b/dev-lisp/roswell/roswell-19.09.12.102.ebuild
new file mode 100644
index 000000000000..11cdfe7deea0
--- /dev/null
+++ b/dev-lisp/roswell/roswell-19.09.12.102.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="A lisp installer and launcher for major environment"
+HOMEPAGE="https://github.com/roswell/roswell"
+SRC_URI="https://github.com/roswell/roswell/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="!net-libs/librouteros"
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/dev-lisp/roswell/roswell-19.12.13.103.ebuild b/dev-lisp/roswell/roswell-19.12.13.103.ebuild
new file mode 100644
index 000000000000..5e5d2416212b
--- /dev/null
+++ b/dev-lisp/roswell/roswell-19.12.13.103.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="A lisp installer and launcher for major environment"
+HOMEPAGE="https://github.com/roswell/roswell"
+SRC_URI="https://github.com/roswell/roswell/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+
+KEYWORDS="~amd64 ~x86"
+
+# File collision, #691754
+RDEPEND="!net-libs/librouteros"
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/dev-lisp/roswell/roswell-20.01.14.104.ebuild b/dev-lisp/roswell/roswell-20.01.14.104.ebuild
new file mode 100644
index 000000000000..26c7a2e2605b
--- /dev/null
+++ b/dev-lisp/roswell/roswell-20.01.14.104.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="A lisp installer and launcher for major environment"
+HOMEPAGE="https://github.com/roswell/roswell"
+SRC_URI="https://github.com/roswell/roswell/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+
+KEYWORDS="~amd64 ~x86"
+
+# File collision with librouteros (#691754)
+RDEPEND="!net-libs/librouteros"
+
+src_prepare() {
+ default
+ eautoreconf
+}
diff --git a/dev-lisp/sbcl/Manifest b/dev-lisp/sbcl/Manifest
new file mode 100644
index 000000000000..c4fc9dbe99bb
--- /dev/null
+++ b/dev-lisp/sbcl/Manifest
@@ -0,0 +1,34 @@
+DIST sbcl-1.0.23-sparc-solaris-binary.tar.bz2 7907803 BLAKE2B 4be6831c196cfef505b411fa9ae0b9586f93309ce97fcd2b964abfb4175f00f7437da7859334973f2441592fc1a13cc5557044737659f5ef13998b593d623cda SHA512 d641d7859f0d60ce7dd684a0f21e62282a5a658ed6bb4d67d6b141b3ce22d9e27261efe7e5d0f752c30e467cf90d7c8a03ad2a04b3c60042f0ef0a4808a9c74a
+DIST sbcl-1.0.28-alpha-linux-binary.tar.bz2 7573824 BLAKE2B ab8e139adb4fbc0ac7b34457c3361b044d04d8d9dedba2008cb19220915900e2d1bf540b617c738145923d74fa28ab7d979fd0d1bf4b9d17c445dfb080731263 SHA512 85ceb4d3bf971777f5444a63cbabd88ccfaf16ed3b3c86cc5ea6cb3fd3189c4cd5a5ebbf785c97366afb7026604ffc34a1129936291deede5993056e158125ab
+DIST sbcl-1.0.28-sparc-linux-binary.tar.bz2 8032042 BLAKE2B ca4213ef00447d66406d1c752a1653fd628deba0e112f55a5625dad61da30c0be7c60fe4e84e8dcc9d9946db553ad544dc39b28d62124d8e3d6197943efc944a SHA512 cea1ba06f85169fca9fe3026813c6e7e8e8209b874e048b7bd63cb3a1c5bd7c829e8dbb2c486977e190a0390d28e4845938a9e84378f4f2f16f72bf0b6f45c80
+DIST sbcl-1.0.47-powerpc-darwin-binary.tar.bz2 8217590 BLAKE2B 68da614df7d27ecf08a21603d4f172344c86e650176d238fe73d7756a626b694e2165b9157e53732730861d085902e5cc893b967073168fe3845cd2621668b87 SHA512 8118de56e448bce7a72b832e661eb4e2687eed675f88f766f7043c843a432e35121d9e6f9da8d22ac690c54bda0d55ecb07728748ce2cdd57320f49b4b812b86
+DIST sbcl-1.1.6-x86-darwin-binary.tar.bz2 9091955 BLAKE2B b532828cc729ffef17d0bedb827a1482edb190f5740d14dbff347f8cfe61f1960c5011162dc620ebb8d99fbd8f8bbf070923a59b8639ea9985219b58d334cd27 SHA512 5b9d58ba1a7bcf3aa5011ac5ba1c8dba65e44b2c3f8a31b15db54de6b34ea0f7482c45f1cc4e1323e154ce79fbba030112df3795cb323bca46bac50f15d2a138
+DIST sbcl-1.2.11-x86-64-darwin-binary.tar.bz2 10038928 BLAKE2B b434f65e9e42341645ac91c8f35ffeb6d2d7f043544ca9af7c519a46df15cee6d2fe4d0a56c10643c6f263e8deb75bcfb00cc399d1f32c10d53c20a9842c45db SHA512 c271796f854fe884e0d8aa6504bbe2e6c078de1555fc9a823463640cfd8c793dbddcb3f32932788d84a41e2b8a085b95c97c13a15c43fc909dcaad18ce25f215
+DIST sbcl-1.2.7-powerpc-linux-binary.tar.bz2 9884585 BLAKE2B 1870da882fc5e466eaf5e96ed46aed600660bdfe836eabe145cf9ea4713e537a7d45dd76538d899801d0e3ea944c4ccfff1c9688fc695890bb4cac69135ef046 SHA512 7b9fef12d3d6397adec6a0c26d1431a18b8d91b5bf009034eb2501de9fd60dc04dd2e3cd2d9feb9204d4631360aea88ba07a9ad75dad0767b5dcc5e62e84e790
+DIST sbcl-1.2.7-x86-64-solaris-binary.tar.bz2 10438955 BLAKE2B ca9cd3a55873c648940793ae9fb92dde5e4569b7392932771b31dc71da380267556b3ceb8b099f62576b76d77395123735232c43c0ed1f934d1e004a6194d0fa SHA512 9566cebf8fc29ead1f919309e3f98aeb618e97b34c80f53d1f739f1a3f4ef4cbaebd1c67f0b32172a0cdf14dc405eb75d0e916dedf3b8a758cdec2368d25f5c1
+DIST sbcl-1.2.7-x86-linux-binary.tar.bz2 10516485 BLAKE2B 4036684f398c0766d55a6089fb67ae23520fc949b39525b2ac005f2665cdee8c0901a638e5dfc8e78e5f80963331a5fe2ddd4b0108ddaea063fabfd1d5829f72 SHA512 ca09beeafeb40f21eb1a377f04a69d57feb5549fa63aadf2e39aa65f3875418bdab755e22b567b3f2c514fb94534b739a57606288912ffc5cddf370a400e9e5c
+DIST sbcl-1.2.7-x86-solaris-binary.tar.bz2 10351529 BLAKE2B 9b7324c8177856c6024220ce71070a1a51b93fa9352fe692c3fd5afa9b6cdcbb361c54e354ab1cc1153e6bf15cb0c5fc267c3da03addd5d35fbec840f72a7c06 SHA512 b30d40f0095bb43719ba2e1a619f53fe5f0bccaa08a35481bc5feeb0dd5b540018a9ec9f61799de89991a85750577922cb4e56db4d7dab8f07e18bbc643bdad1
+DIST sbcl-1.3.11-source.tar.bz2 5790557 BLAKE2B d6b493d880ab2481f18381475165a3eed585fa46e626eb1e762cced29a6a7315be638df6f44ffdc694d8fb55509f912267a7dbe8892b6672eb56e839f55908ff SHA512 07cce0b33f1d41bc208827d228ae356b56165bb55fab72c48973a15a63e2e680aafc16db67d36cc4952f71101faaacafd9660276cd67673314f1699d6a91af82
+DIST sbcl-1.3.11-x86-64-linux-binary.tar.bz2 9248214 BLAKE2B f1f6ebbec168a47d7405c15c63a70f10afad2d271d17dfa461f94bd8b1a1c21506a3a9c1d7ffe2501cc70419406e0d73b53a34ff9ff003e4791170101b7b1293 SHA512 ffb443f9e3ede2f9dbdc1bf28554bd59ef1fd5ad855465ee10f9835221fde20211188e881be854b4760870b122dfc6c5ad5c8cad1bea613ffb3b6a6f67a36056
+DIST sbcl-1.3.12-armhf-linux-binary.tar.bz2 9193847 BLAKE2B 27106c0144ee99f534cd0a59cfb331ef8f39dbefdc76e294a8671523b1c05f42353d31b8e74600dd01f85fb5156d39216a877d77aba57a061427ea1dc28a492e SHA512 5bdb4e2b584933e9ee9aaa2ba68328f219f072af802782ee5dedf83baa5c679cd5a1ccbf3458678810ccb8679ffd392d4fba108e86d537e10554c1860bfd4de5
+DIST sbcl-1.3.9-armhf-linux-binary.tar.bz2 9161130 BLAKE2B 0dbfe39803d6e3955124fa1a619da7b6d4ec9e7d6eb78e868508c61bf478a980cb15ba427ef0b38d0f051ce38b881020534c0d37bfbcd81a8d763654283669ec SHA512 309e2ac7ef9ac95bf751432cf243af0de022c5b21054df2bf4e99da4ff087218af72b0ab3be69214eba3df1b6bbe707cc28840508e960c5d2ed2af0e86de3fdd
+DIST sbcl-1.4.11-armhf-linux-binary.tar.bz2 9767589 BLAKE2B 2949338bc19973e0ca38f435caaa4c991a6c86d70dc092a4f1b6ec3eefa47af76f2a0c3fd8a4f8004127f4b8b3666a5cf4260b6ab56802308880067e4eaf8568 SHA512 297edddc36e9b9de080f9e25faa323e23877af234104b4b7e0fe2b74f0dd117d9cf0caa87b79718a8b071bcb5e97c8118f1d11af0e4aba2a961beb40c4dc99cb
+DIST sbcl-1.4.2-arm64-linux-binary.tar.bz2 10578821 BLAKE2B 1cd25c548be0f1b7ec01edc3bee7fe6c2aaf07b7bd1fc55d408dee7ac95e8f3761a194bf9e8efb734179a7eff04cdae2fe5ba4a9ba5ab06f7322ac1550d142cc SHA512 39bbd735b242aa0bbac05c6f4dbe28cb45e01684db7e5b4f1e51f995a9f9d5b484f63cc4243f472f72b3b1e6c4cd2268a7e812b15426eca5cf9a1fede10f44bb
+DIST sbcl-1.4.3-x86-linux-binary.tar.bz2 10227185 BLAKE2B 6d77c4f4177cbdb72fb9bab0da5bd91e0aa8deafffd238818a2551332f0ab246715d9489b5c1156f3481aa7fb79d161a988404620fc09fe86ff927543a1ee678 SHA512 41cd63d61dd7c46370341dce39a362287a23b528bfebe8e5571614aeefdea03d318207d25562e995db9ccedb6c1f50ea4d66627721f0fd9486e99440126e6a38
+DIST sbcl-1.4.8-x86-64-linux-binary.tar.bz2 10353701 BLAKE2B 5b56f46fbdb87f015ed1fe103b6caaf43d2d424b45e2574e306b3d3cbc3c7bdfa48847a2e6d7d819e6bf4b59fa02ea01f9ce6b023802ae6f91fc7f56e5a260de SHA512 f3cb3c30dec1b7e6ac0c1b67de26192723871f8a8d543a41d7c4d04b0813fd7da1043433237b648a2c23f73169fe38f2ec3a3c2bd412eb4c9d36ed929c40f27d
+DIST sbcl-1.4.9-source.tar.bz2 6051607 BLAKE2B 8abcaf73233ea1a23d47987b16554636dcf94acfbc7ab731f0730fdb4a8176593fb3ab52d9b25b3dd56753cd984f7e0eddb1585a142eb7ad1aa5e3e03d7b0ca9 SHA512 e0248f460f9737d47653dd520732062d2637813b550df356ecc90aa6d21fbdd74f03182d1e890c09c1da742f7d57b4fbd04a4e6dc36999aca51bb6c2952ac236
+DIST sbcl-1.5.6-source.tar.bz2 6370992 BLAKE2B f2b374c9870eda8b7f40e7c66dec8888167fcd17ead6c42cd07acd2f35684f150ab907a95eb2be8e84b741fad8d69bc7f2c10a8de8e568f8705baa0a91c951de SHA512 5adeb4c694d41c08c780d5f0ed2e0f4c830ea74fdb7b345813b1cd616a0b310c2394f4727b6f5a75b04bd0dda92ee774298bef7225253e7d325e8f83bc645320
+DIST sbcl-1.5.6-x86-64-linux-binary.tar.bz2 10131687 BLAKE2B f921b0c0b292f213eb1447b3e533f24ba15bb58c0be00bea3a0cb1dcadc91ed9a648b6452b535fdd189cdb3af7141e554c055748249084c36e7f523ea8f44b8c SHA512 4d270deb04b22cd22caec3086de4b9cb13e9529c33f2e0579baf2c0b00b98d07c16a22997849ea77650ff56a0b844fd5fa750929639481df2820badf12c2a112
+DIST sbcl-1.5.7-source.tar.bz2 6438048 BLAKE2B d7036d6ac6abdd433e112ae9bd59ad00447c45edd064cd863b609d21b99896c7a435b3a0cc82fe0d5ef842c0156d134e690c4363667f4c9b57b49cbfbc24a0e0 SHA512 8dde1b0d400f93fed085f6b6c33b057c3dec4dfa83afb7431384add6628cb2f910cba006b2579cea547685aeb79fade5ad576b0a42e4f7e1f6c0c3f26acf226e
+DIST sbcl-1.5.8-source.tar.bz2 6409837 BLAKE2B cb503ee1db82f2e1a9c123b9b6b5052b23167c8a76039f12afee580be058a0b78a51eade541f7e2beab5566204af147c8cd1dab25ef0fff381cf298ba758aee5 SHA512 20966035e878a1f6aa9b0acf20eb88087d5cd604d65ae90f43bbfa3d2d40afa46864daabf45d8c6ecbbd429e876279c891d6e3d9344f2972f611a4f9b2eec8f4
+DIST sbcl-1.5.8-x86-64-linux-binary.tar.bz2 10145219 BLAKE2B aeccd48a5448e334d6cf3ca4e067ac23943256c2a729ff24b6b3c332c6c70c108b68a6903193a403176d4fbf4804c9f22add615e29fa09022f84b0190a429454 SHA512 d733929775be6fe5d46fd5b11c808eae89172a5a8694f1c2a7927cc364419529292d70f6902731f4c7822c85708555382de31b605440493bb281ccef552daf6c
+DIST sbcl-2.0.0-source.tar.bz2 6457217 BLAKE2B ae09d4d80ca7100fb412be570126918612eb5a3f27a8c17ced4e0c555d105f3180999f2663ea86910dda9d812d4297cceb8d7c43d5084d20902839e1f23bc739 SHA512 e458e11af6703d8cff973cf5167866b93fe5f6e1b2df3cbf0c1beb014eef2d737d83fc9cde5745d476ef5397a2c9b4b4148d2b77ebbcec13e0f284b2e0900906
+DIST sbcl-2.0.0-x86-64-linux-binary.tar.bz2 10196560 BLAKE2B 161d53df96817a50606ffc6a5ad502a94a1aa622e0a45c17c4ff4148deafb2e1db560aacd33b1198eb6fd3bc462b320e01d4925097bec3954f9d6ce564a2b1f5 SHA512 23d3974656a33ae0cfce340e2fbdd60a4e595353e7cc6e75dbab0242d7baaa30d677d1163d4440e953cd7f859fc737b073055b68fbeb2e57e3542a0133d7648f
+DIST sbcl-2.0.1-source.tar.bz2 6466983 BLAKE2B f040fb288f5b7adb8a7f56aae60a37e38034c2fed958b1361f473096769367b0a10a76a0e45380e6dcf3b4bd2c1038957448f70eede38b04c228a14e3afc1fc2 SHA512 1d92589033e123c21377f820dbc22e27f2610a372c5545799bec7c247795ba4b8b65102c7fe739f4a15a84579ec72f63fb9f4b197db5c6da1f8d59bd35966bea
+DIST sbcl-2.0.1-x86-64-linux-binary.tar.bz2 10151722 BLAKE2B 445fcaa5a6f1c2a7a7d80dd28d1126c33437af2a59dadd25cbbe9ca4e12488a985e78aa12095fda8e38e21dceca77a0e1bca0949133b0ac2666d4367bf881f68 SHA512 1d24981b42c5d91f6037ad6fed782786bbc75edcb2f125a6d5b793448d00c211af515f56b6dd70a68bd33ea7174fd1d96ef9ab353c96905835b6299dcb170f47
+DIST sbcl-2.0.3-source.tar.bz2 6489521 BLAKE2B f610367e2fbc58e47b3c7a825cd03344e8dd288e2e2a202327c5caa652aa13f1d675c52a65626acf2d577402552ac620973278197c95d7bfaeea31c2e372a2c7 SHA512 c29c115fff0e118e5c05959dd8d73ae876458daeb5ddde67ce485b10e6d1583b1f8a9597b54b45606696ab1b1eea5392dcb09357c83fce31323f2a5a154f2dd1
+DIST sbcl-2.0.3-x86-64-linux-binary.tar.bz2 10180812 BLAKE2B feebf6e957acd8cbe3a5549f6b9e5832d8ee6cc40e7c319a24db0be93cacbc33f5dd5cc3d187be0dfdee6997e3a114267ee0a8cf9fc7defbe63941739a3e2d44 SHA512 7d7fc106aa9c17552d5a7343a2776ebdc24613516c44523c568a4b4045baa9a5356c37480594bc7a6fe8e012c570963915dd80b18c50e4e58f273455d35a8b4d
+DIST sbcl-2.0.4-source.tar.bz2 6512479 BLAKE2B 95e42f8d77bb914cf0d45e59bb90c8229cbcf32352cebfc4b7fe44a00205751eddae7910b8453981bfe5ea16574ea3c539a7daecbe71d9c79fb93e65aac8b5df SHA512 855e25d3a25c558cfd4a97c6d6a0130910556ad4b1d4a7df924a34b50f1d9d3cc3d4373510353548c6ddf3000b55c70285ccbd888fab59f73d137c16539df816
+DIST sbcl-2.0.4-x86-64-linux-binary.tar.bz2 10189030 BLAKE2B 93a59750d6c7b89add194ffd7e165599a24d0f23aec8415c1cc5321ad059144c266fd9218f2923d86c4cc19cff1c62dde08ab8a68c7cab8487aa458dfda93f42 SHA512 68533e83a452ec56ee5520daef54c24cfbd4307d8aab231c726eec69562262f40213dd453879c6f82bf9f31d850561a5f3f99c1207a3197ccab8017c2208979d
+DIST sbcl-2.0.5-source.tar.bz2 6531110 BLAKE2B c658365c7247abb81fed8ef05a4edf8319df502ca5abed1b2908c9ffac24260bb654a2ad3a17573581a68ea6e6523ce4491e0ca53f36685f251aa168145dcf1a SHA512 0c27e22dd76d157a74ef7e97dcd03030096dde0eb46901ea27acb60faa0ab34881d76a9c6708d963b0e6f62da6331b85b8d3de76fd1fc9163c159e631759f808
+DIST sbcl-2.0.5-x86-64-linux-binary.tar.bz2 10176341 BLAKE2B 602d1c3f09082f62bee04ab9f6d0906567aa9d74f364ea4278b725bf6fbe820f0b470fe2b326adb85c2867a8e96476f4e27cc3e6a18abe6483ab2704d8a1eddf SHA512 0bd278cbdb72f62bd441b061459d074080ff6aeef61137247f56b9c91a05185245539691d6a8a4b8efdcab523e4ab3275b6f924154246aac42cc3b49f48b8198
diff --git a/dev-lisp/sbcl/files/bsd-sockets-test-1.2.11.patch b/dev-lisp/sbcl/files/bsd-sockets-test-1.2.11.patch
new file mode 100644
index 000000000000..88f6fa588cee
--- /dev/null
+++ b/dev-lisp/sbcl/files/bsd-sockets-test-1.2.11.patch
@@ -0,0 +1,350 @@
+diff -r -U2 sbcl-1.2.11.orig/contrib/sb-bsd-sockets/tests.lisp sbcl-1.2.11/contrib/sb-bsd-sockets/tests.lisp
+--- sbcl-1.2.11.orig/contrib/sb-bsd-sockets/tests.lisp 2015-04-27 20:56:47.000000000 +0600
++++ sbcl-1.2.11/contrib/sb-bsd-sockets/tests.lisp 2015-04-28 22:27:32.588146072 +0600
+@@ -36,13 +36,13 @@
+ ;;; Apparently getprotobyname_r on FreeBSD says -1 and EINTR
+ ;;; for unknown protocols...
+-#-(and freebsd sb-thread)
+-#-(and dragonfly sb-thread)
+-(deftest get-protocol-by-name/error
+- (handler-case (get-protocol-by-name "nonexistent-protocol")
+- (unknown-protocol ()
+- t)
+- (:no-error ()
+- nil))
+- t)
++;#-(and freebsd sb-thread)
++;#-(and dragonfly sb-thread)
++;(deftest get-protocol-by-name/error
++; (handler-case (get-protocol-by-name "nonexistent-protocol")
++; (unknown-protocol ()
++; t)
++; (:no-error ()
++; nil))
++; t)
+
+ (deftest make-inet-socket.smoke
+@@ -92,19 +92,19 @@
+ t)
+
+-#-win32
+-(deftest make-inet6-socket.smoke
+- (handler-case
+- (let ((s (make-instance 'inet6-socket :type :stream :protocol (get-protocol-by-name "tcp"))))
+- (> (socket-file-descriptor s) 1))
+- (address-family-not-supported () t))
+- t)
+-
+-#-win32
+-(deftest make-inet6-socket.keyword
+- (handler-case
+- (let ((s (make-instance 'inet6-socket :type :stream :protocol :tcp)))
+- (> (socket-file-descriptor s) 1))
+- (address-family-not-supported () t))
+- t)
++;#-win32
++;(deftest make-inet6-socket.smoke
++; (handler-case
++; (let ((s (make-instance 'inet6-socket :type :stream :protocol (get-protocol-by-name "tcp"))))
++; (> (socket-file-descriptor s) 1))
++; (address-family-not-supported () t))
++; t)
++
++;#-win32
++;(deftest make-inet6-socket.keyword
++; (handler-case
++; (let ((s (make-instance 'inet6-socket :type :stream :protocol :tcp)))
++; (> (socket-file-descriptor s) 1))
++; (address-family-not-supported () t))
++; t)
+
+ (deftest* (non-block-socket)
+@@ -114,52 +114,52 @@
+ t)
+
+-(deftest inet-socket-bind
+- (let* ((tcp (get-protocol-by-name "tcp"))
+- (address (make-inet-address "127.0.0.1"))
+- (s1 (make-instance 'inet-socket :type :stream :protocol tcp))
+- (s2 (make-instance 'inet-socket :type :stream :protocol tcp)))
+- (unwind-protect
+- ;; Given the functions we've got so far, if you can think of a
+- ;; better way to make sure the bind succeeded than trying it
+- ;; twice, let me know
+- (progn
+- (socket-bind s1 address 0)
+- (handler-case
+- (let ((port (nth-value 1 (socket-name s1))))
+- (socket-bind s2 address port)
+- nil)
+- (address-in-use-error () t)))
+- (socket-close s1)
+- (socket-close s2)))
+- t)
+-
+-#-win32
+-(deftest inet6-socket-bind
+- (handler-case
+- (let* ((tcp (get-protocol-by-name "tcp"))
+- (address (make-inet6-address "::1"))
+- (s1 (make-instance 'inet6-socket :type :stream :protocol tcp))
+- (s2 (make-instance 'inet6-socket :type :stream :protocol tcp)))
+- (unwind-protect
+- ;; Given the functions we've got so far, if you can think of a
+- ;; better way to make sure the bind succeeded than trying it
+- ;; twice, let me know
+- (handler-case
+- (socket-bind s1 address 0)
+- (socket-error ()
+- ;; This may mean no IPv6 support, can't fail a test
+- ;; because of that (address-family-not-supported doesn't catch that)
+- t)
+- (:no-error (x)
+- (declare (ignore x))
+- (handler-case
+- (let ((port (nth-value 1 (socket-name s1))))
+- (socket-bind s2 address port)
+- nil)
+- (address-in-use-error () t))))
+- (socket-close s1)
+- (socket-close s2)))
+- (address-family-not-supported () t))
+- t)
++;(deftest inet-socket-bind
++; (let* ((tcp (get-protocol-by-name "tcp"))
++; (address (make-inet-address "127.0.0.1"))
++; (s1 (make-instance 'inet-socket :type :stream :protocol tcp))
++; (s2 (make-instance 'inet-socket :type :stream :protocol tcp)))
++; (unwind-protect
++; ;; Given the functions we've got so far, if you can think of a
++; ;; better way to make sure the bind succeeded than trying it
++; ;; twice, let me know
++; (progn
++; (socket-bind s1 address 0)
++; (handler-case
++; (let ((port (nth-value 1 (socket-name s1))))
++; (socket-bind s2 address port)
++; nil)
++; (address-in-use-error () t)))
++; (socket-close s1)
++; (socket-close s2)))
++; t)
++
++;#-win32
++;(deftest inet6-socket-bind
++; (handler-case
++; (let* ((tcp (get-protocol-by-name "tcp"))
++; (address (make-inet6-address "::1"))
++; (s1 (make-instance 'inet6-socket :type :stream :protocol tcp))
++; (s2 (make-instance 'inet6-socket :type :stream :protocol tcp)))
++; (unwind-protect
++; ;; Given the functions we've got so far, if you can think of a
++; ;; better way to make sure the bind succeeded than trying it
++; ;; twice, let me know
++; (handler-case
++; (socket-bind s1 address 0)
++; (socket-error ()
++; ;; This may mean no IPv6 support, can't fail a test
++; ;; because of that (address-family-not-supported doesn't catch that)
++; t)
++; (:no-error (x)
++; (declare (ignore x))
++; (handler-case
++; (let ((port (nth-value 1 (socket-name s1))))
++; (socket-bind s2 address port)
++; nil)
++; (address-in-use-error () t))))
++; (socket-close s1)
++; (socket-close s2)))
++; (address-family-not-supported () t))
++; t)
+
+ (deftest* (simple-sockopt-test)
+@@ -228,35 +228,35 @@
+ ;;; the message ended up
+
+-#-win32
+-(deftest simple-local-client
+- (progn
+- ;; SunOS (Solaris) and Darwin systems don't have a socket at
+- ;; /dev/log. We might also be building in a chroot or
+- ;; something, so don't fail this test just because the file is
+- ;; unavailable, or if it's a symlink to some weird character
+- ;; device.
+- (when (block nil
+- (handler-bind ((sb-posix:syscall-error
+- (lambda (e)
+- (declare (ignore e))
+- (return nil))))
+- (sb-posix:s-issock
+- (sb-posix::stat-mode (sb-posix:stat "/dev/log")))))
+- (let ((s (make-instance 'local-socket :type :datagram)))
+- (format t "Connecting ~A... " s)
+- (finish-output)
+- (handler-case
+- (socket-connect s "/dev/log")
+- (sb-bsd-sockets::socket-error ()
+- (setq s (make-instance 'local-socket :type :stream))
+- (format t "failed~%Retrying with ~A... " s)
+- (finish-output)
+- (socket-connect s "/dev/log")))
+- (format t "ok.~%")
+- (let ((stream (socket-make-stream s :input t :output t :buffering :none)))
+- (format stream
+- "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored"))))
+- t)
+- t)
++;#-win32
++;(deftest simple-local-client
++; (progn
++; ;; SunOS (Solaris) and Darwin systems don't have a socket at
++; ;; /dev/log. We might also be building in a chroot or
++; ;; something, so don't fail this test just because the file is
++; ;; unavailable, or if it's a symlink to some weird character
++; ;; device.
++; (when (block nil
++; (handler-bind ((sb-posix:syscall-error
++; (lambda (e)
++; (declare (ignore e))
++; (return nil))))
++; (sb-posix:s-issock
++; (sb-posix::stat-mode (sb-posix:stat "/dev/log")))))
++; (let ((s (make-instance 'local-socket :type :datagram)))
++; (format t "Connecting ~A... " s)
++; (finish-output)
++; (handler-case
++; (socket-connect s "/dev/log")
++; (sb-bsd-sockets::socket-error ()
++; (setq s (make-instance 'local-socket :type :stream))
++; (format t "failed~%Retrying with ~A... " s)
++; (finish-output)
++; (socket-connect s "/dev/log")))
++; (format t "ok.~%")
++; (let ((stream (socket-make-stream s :input t :output t :buffering :none)))
++; (format stream
++; "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored"))))
++; t)
++; t)
+
+
+@@ -373,58 +373,58 @@
+ len address port (subseq buf 0 (min 10 len)))))))
+
+-#+sb-thread
+-(deftest interrupt-io
+- (let (result)
+- (labels
+- ((client (port)
+- (setf result
+- (let ((s (make-instance 'inet-socket
+- :type :stream
+- :protocol :tcp)))
+- (socket-connect s #(127 0 0 1) port)
+- (let ((stream (socket-make-stream s
+- :input t
+- :output t
+- :buffering :none)))
+- (handler-case
+- (prog1
+- (catch 'stop
+- (progn
+- (read-char stream)
+- (sleep 0.1)
+- (sleep 0.1)
+- (sleep 0.1)))
+- (close stream))
+- (error (c)
+- c))))))
+- (server ()
+- (let ((s (make-instance 'inet-socket
+- :type :stream
+- :protocol :tcp)))
+- (setf (sockopt-reuse-address s) t)
+- (socket-bind s (make-inet-address "127.0.0.1") 0)
+- (socket-listen s 5)
+- (multiple-value-bind (* port)
+- (socket-name s)
+- (let* ((client (sb-thread:make-thread
+- (lambda () (client port))))
+- (r (socket-accept s))
+- (stream (socket-make-stream r
+- :input t
+- :output t
+- :buffering :none))
+- (ok :ok))
+- (socket-close s)
+- (sleep 5)
+- (sb-thread:interrupt-thread client
+- (lambda () (throw 'stop ok)))
+- (sleep 5)
+- (setf ok :not-ok)
+- (write-char #\x stream)
+- (close stream)
+- (socket-close r))))))
+- (server))
+- result)
+- :ok)
++;#+sb-thread
++;(deftest interrupt-io
++; (let (result)
++; (labels
++; ((client (port)
++; (setf result
++; (let ((s (make-instance 'inet-socket
++; :type :stream
++; :protocol :tcp)))
++; (socket-connect s #(127 0 0 1) port)
++; (let ((stream (socket-make-stream s
++; :input t
++; :output t
++; :buffering :none)))
++; (handler-case
++; (prog1
++; (catch 'stop
++; (progn
++; (read-char stream)
++; (sleep 0.1)
++; (sleep 0.1)
++; (sleep 0.1)))
++; (close stream))
++; (error (c)
++; c))))))
++; (server ()
++; (let ((s (make-instance 'inet-socket
++; :type :stream
++; :protocol :tcp)))
++; (setf (sockopt-reuse-address s) t)
++; (socket-bind s (make-inet-address "127.0.0.1") 0)
++; (socket-listen s 5)
++; (multiple-value-bind (* port)
++; (socket-name s)
++; (let* ((client (sb-thread:make-thread
++; (lambda () (client port))))
++; (r (socket-accept s))
++; (stream (socket-make-stream r
++; :input t
++; :output t
++; :buffering :none))
++; (ok :ok))
++; (socket-close s)
++; (sleep 5)
++; (sb-thread:interrupt-thread client
++; (lambda () (throw 'stop ok)))
++; (sleep 5)
++; (setf ok :not-ok)
++; (write-char #\x stream)
++; (close stream)
++; (socket-close r))))))
++; (server))
++; result)
++; :ok)
+
+ (defmacro with-client-and-server ((server-socket-var client-socket-var) &body body)
+@@ -485,4 +485,5 @@
+ client server (unsigned-byte 8) ,direction)))))
+
+- (define-shutdown-tests :output)
+- (define-shutdown-tests :io))
++; (define-shutdown-tests :output)
++; (define-shutdown-tests :io))
++)
diff --git a/dev-lisp/sbcl/files/bsd-sockets-test-2.0.5.patch b/dev-lisp/sbcl/files/bsd-sockets-test-2.0.5.patch
new file mode 100644
index 000000000000..3226e7539dc4
--- /dev/null
+++ b/dev-lisp/sbcl/files/bsd-sockets-test-2.0.5.patch
@@ -0,0 +1,385 @@
+diff -U3 -r sbcl-2.0.5.orig/contrib/sb-bsd-sockets/tests.lisp sbcl-2.0.5/contrib/sb-bsd-sockets/tests.lisp
+--- sbcl-2.0.5.orig/contrib/sb-bsd-sockets/tests.lisp 2020-05-31 20:16:48.000000000 +0700
++++ sbcl-2.0.5/contrib/sb-bsd-sockets/tests.lisp 2020-06-08 18:15:59.750860802 +0700
+@@ -18,16 +18,16 @@
+ (equalp (make-inet-address "242.1.211.3") #(242 1 211 3))
+ t)
+
+-(deftest make-inet6-address.1
+- (equalp (make-inet6-address "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")
+- #(255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
+- t)
+-
+-(deftest unparse-inet6-address
+- (string= (sb-bsd-sockets::unparse-inet6-address
+- (make-inet6-address "fe80::abcd:1234"))
+- "fe80::abcd:1234")
+- t)
++;(deftest make-inet6-address.1
++; (equalp (make-inet6-address "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")
++; #(255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
++; t)
++
++;(deftest unparse-inet6-address
++; (string= (sb-bsd-sockets::unparse-inet6-address
++; (make-inet6-address "fe80::abcd:1234"))
++; "fe80::abcd:1234")
++; t)
+
+ (deftest get-protocol-by-name/tcp
+ (integerp (get-protocol-by-name "tcp"))
+@@ -40,15 +40,15 @@
+ ;;; See https://bugs.launchpad.net/sbcl/+bug/659857
+ ;;; Apparently getprotobyname_r on FreeBSD says -1 and EINTR
+ ;;; for unknown protocols...
+-#-(and freebsd sb-thread)
+-#-(and dragonfly sb-thread)
+-(deftest get-protocol-by-name/error
+- (handler-case (get-protocol-by-name "nonexistent-protocol")
+- (unknown-protocol ()
+- t)
+- (:no-error ()
+- nil))
+- t)
++;#-(and freebsd sb-thread)
++;#-(and dragonfly sb-thread)
++;(deftest get-protocol-by-name/error
++; (handler-case (get-protocol-by-name "nonexistent-protocol")
++; (unknown-protocol ()
++; t)
++; (:no-error ()
++; nil))
++; t)
+
+ (eval-when (:compile-toplevel :execute)
+ (when (handler-case (make-instance 'inet-socket
+@@ -108,19 +108,19 @@
+ (:no-error nil))
+ t)
+
+-(deftest make-inet6-socket.smoke
+- (handler-case
+- (let ((s (make-instance 'inet6-socket :type :stream :protocol (get-protocol-by-name "tcp"))))
+- (> (socket-file-descriptor s) 1))
+- ((or address-family-not-supported protocol-not-supported-error) () t))
+- t)
+-
+-(deftest make-inet6-socket.keyword
+- (handler-case
+- (let ((s (make-instance 'inet6-socket :type :stream :protocol :tcp)))
+- (> (socket-file-descriptor s) 1))
+- ((or address-family-not-supported protocol-not-supported-error) () t))
+- t)
++;(deftest make-inet6-socket.smoke
++; (handler-case
++; (let ((s (make-instance 'inet6-socket :type :stream :protocol (get-protocol-by-name "tcp"))))
++; (> (socket-file-descriptor s) 1))
++; ((or address-family-not-supported protocol-not-supported-error) () t))
++; t)
++
++;(deftest make-inet6-socket.keyword
++; (handler-case
++; (let ((s (make-instance 'inet6-socket :type :stream :protocol :tcp)))
++; (> (socket-file-descriptor s) 1))
++; ((or address-family-not-supported protocol-not-supported-error) () t))
++; t)
+
+ #+ipv4-support
+ (deftest* (non-block-socket)
+@@ -129,54 +129,54 @@
+ (non-blocking-mode s))
+ t)
+
+-#+ipv4-support
+-(deftest inet-socket-bind
+- (let* ((tcp (get-protocol-by-name "tcp"))
+- (address (make-inet-address "127.0.0.1"))
+- (s1 (make-instance 'inet-socket :type :stream :protocol tcp))
+- (s2 (make-instance 'inet-socket :type :stream :protocol tcp)))
+- (unwind-protect
+- ;; Given the functions we've got so far, if you can think of a
+- ;; better way to make sure the bind succeeded than trying it
+- ;; twice, let me know
+- (progn
+- (socket-bind s1 address 0)
+- (handler-case
+- (let ((port (nth-value 1 (socket-name s1))))
+- (socket-bind s2 address port)
+- nil)
+- (address-in-use-error () t)))
+- (socket-close s1)
+- (socket-close s2)))
+- t)
+-
+-(deftest inet6-socket-bind
+- (handler-case
+- (let* ((tcp (get-protocol-by-name "tcp"))
+- (address (make-inet6-address "::1"))
+- (s1 (make-instance 'inet6-socket :type :stream :protocol tcp))
+- (s2 (make-instance 'inet6-socket :type :stream :protocol tcp)))
+- (unwind-protect
+- ;; Given the functions we've got so far, if you can think of a
+- ;; better way to make sure the bind succeeded than trying it
+- ;; twice, let me know
+- (handler-case
+- (socket-bind s1 address 0)
+- (socket-error ()
+- ;; This may mean no IPv6 support, can't fail a test
+- ;; because of that (address-family-not-supported doesn't catch that)
+- t)
+- (:no-error (x)
+- (declare (ignore x))
+- (handler-case
+- (let ((port (nth-value 1 (socket-name s1))))
+- (socket-bind s2 address port)
+- nil)
+- (address-in-use-error () t))))
+- (socket-close s1)
+- (socket-close s2)))
+- ((or address-family-not-supported protocol-not-supported-error) () t))
+- t)
++;#+ipv4-support
++;(deftest inet-socket-bind
++; (let* ((tcp (get-protocol-by-name "tcp"))
++; (address (make-inet-address "127.0.0.1"))
++; (s1 (make-instance 'inet-socket :type :stream :protocol tcp))
++; (s2 (make-instance 'inet-socket :type :stream :protocol tcp)))
++; (unwind-protect
++; ;; Given the functions we've got so far, if you can think of a
++; ;; better way to make sure the bind succeeded than trying it
++; ;; twice, let me know
++; (progn
++; (socket-bind s1 address 0)
++; (handler-case
++; (let ((port (nth-value 1 (socket-name s1))))
++; (socket-bind s2 address port)
++; nil)
++; (address-in-use-error () t)))
++; (socket-close s1)
++; (socket-close s2)))
++; t)
++
++;(deftest inet6-socket-bind
++; (handler-case
++; (let* ((tcp (get-protocol-by-name "tcp"))
++; (address (make-inet6-address "::1"))
++; (s1 (make-instance 'inet6-socket :type :stream :protocol tcp))
++; (s2 (make-instance 'inet6-socket :type :stream :protocol tcp)))
++; (unwind-protect
++; ;; Given the functions we've got so far, if you can think of a
++; ;; better way to make sure the bind succeeded than trying it
++; ;; twice, let me know
++; (handler-case
++; (socket-bind s1 address 0)
++; (socket-error ()
++; ;; This may mean no IPv6 support, can't fail a test
++; ;; because of that (address-family-not-supported doesn't catch that)
++; t)
++; (:no-error (x)
++; (declare (ignore x))
++; (handler-case
++; (let ((port (nth-value 1 (socket-name s1))))
++; (socket-bind s2 address port)
++; nil)
++; (address-in-use-error () t))))
++; (socket-close s1)
++; (socket-close s2)))
++; ((or address-family-not-supported protocol-not-supported-error) () t))
++; t)
+
+ #+ipv4-support
+ (deftest* (simple-sockopt-test)
+@@ -244,37 +244,37 @@
+ ;;; to look at /etc/syslog.conf or local equivalent to find out where
+ ;;; the message ended up
+
+-#-win32
+-(deftest simple-local-client
+- (progn
+- ;; SunOS (Solaris) and Darwin systems don't have a socket at
+- ;; /dev/log. We might also be building in a chroot or
+- ;; something, so don't fail this test just because the file is
+- ;; unavailable, or if it's a symlink to some weird character
+- ;; device.
+- (when (block nil
+- (handler-bind ((sb-posix:syscall-error
+- (lambda (e)
+- (declare (ignore e))
+- (return nil))))
+- (sb-posix:s-issock
+- (sb-posix::stat-mode (sb-posix:stat "/dev/log")))))
+- (let ((s (make-instance 'local-socket :type :datagram)))
+- (format t "Connecting ~A... " s)
+- (finish-output)
+- (handler-case
+- (socket-connect s "/dev/log")
+- (sb-bsd-sockets::socket-error ()
+- (setq s (make-instance 'local-socket :type :stream))
+- (format t "failed~%Retrying with ~A... " s)
+- (finish-output)
+- (socket-connect s "/dev/log")))
+- (format t "ok.~%")
+- (let ((stream (socket-make-stream s :input t :output t :buffering :none)))
+- (format stream
+- "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored"))))
+- t)
+- t)
++;#-win32
++;(deftest simple-local-client
++; (progn
++; ;; SunOS (Solaris) and Darwin systems don't have a socket at
++; ;; /dev/log. We might also be building in a chroot or
++; ;; something, so don't fail this test just because the file is
++; ;; unavailable, or if it's a symlink to some weird character
++; ;; device.
++; (when (block nil
++; (handler-bind ((sb-posix:syscall-error
++; (lambda (e)
++; (declare (ignore e))
++; (return nil))))
++; (sb-posix:s-issock
++; (sb-posix::stat-mode (sb-posix:stat "/dev/log")))))
++; (let ((s (make-instance 'local-socket :type :datagram)))
++; (format t "Connecting ~A... " s)
++; (finish-output)
++; (handler-case
++; (socket-connect s "/dev/log")
++; (sb-bsd-sockets::socket-error ()
++; (setq s (make-instance 'local-socket :type :stream))
++; (format t "failed~%Retrying with ~A... " s)
++; (finish-output)
++; (socket-connect s "/dev/log")))
++; (format t "ok.~%")
++; (let ((stream (socket-make-stream s :input t :output t :buffering :none)))
++; (format stream
++; "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored"))))
++; t)
++; t)
+
+ ;;; these require that the internet (or bits of it, at least) is available
+
+@@ -390,59 +390,59 @@
+ (format t "Received ~A bytes from ~A:~A - ~A ~%"
+ len address port (subseq buf 0 (min 10 len)))))))
+
+-#+(and ipv4-support sb-thread)
+-(deftest interrupt-io
+- (let (result
+- (sem (sb-thread:make-semaphore)))
+- (labels
+- ((client (port)
+- (setf result
+- (let ((s (make-instance 'inet-socket
+- :type :stream
+- :protocol :tcp)))
+- (socket-connect s #(127 0 0 1) port)
+- (let ((stream (socket-make-stream s
+- :input t
+- :output t
+- :buffering :none)))
+- (handler-case
+- (prog1
+- (catch 'stop
+- (sb-thread:signal-semaphore sem)
+- (read-char stream))
+- (close stream))
+- (error (c)
+- c))))))
+- (server ()
+- (let ((s (make-instance 'inet-socket
+- :type :stream
+- :protocol :tcp)))
+- (setf (sockopt-reuse-address s) t)
+- (socket-bind s (make-inet-address "127.0.0.1") 0)
+- (socket-listen s 5)
+- (multiple-value-bind (* port)
+- (socket-name s)
+- (let* ((client (sb-thread:make-thread
+- (lambda () (client port))))
+- (r (socket-accept s))
+- (stream (socket-make-stream r
+- :input t
+- :output t
+- :buffering :none)))
+- (socket-close s)
+- (sb-thread:wait-on-semaphore sem)
+- (sleep 0.1)
+- (sb-thread:interrupt-thread client
+- (lambda () (throw 'stop :ok)))
+- (unless (sb-ext:wait-for (null (sb-thread::thread-interruptions client)) :timeout 5)
+- (setf result :timeout))
+- (write-char #\x stream)
+- (close stream)
+- (socket-close r)
+- (sb-thread:join-thread client :timeout 5))))))
+- (server))
+- result)
+- :ok)
++;#+(and ipv4-support sb-thread)
++;(deftest interrupt-io
++; (let (result
++; (sem (sb-thread:make-semaphore)))
++; (labels
++; ((client (port)
++; (setf result
++; (let ((s (make-instance 'inet-socket
++; :type :stream
++; :protocol :tcp)))
++; (socket-connect s #(127 0 0 1) port)
++; (let ((stream (socket-make-stream s
++; :input t
++; :output t
++; :buffering :none)))
++; (handler-case
++; (prog1
++; (catch 'stop
++; (sb-thread:signal-semaphore sem)
++; (read-char stream))
++; (close stream))
++; (error (c)
++; c))))))
++; (server ()
++; (let ((s (make-instance 'inet-socket
++; :type :stream
++; :protocol :tcp)))
++; (setf (sockopt-reuse-address s) t)
++; (socket-bind s (make-inet-address "127.0.0.1") 0)
++; (socket-listen s 5)
++; (multiple-value-bind (* port)
++; (socket-name s)
++; (let* ((client (sb-thread:make-thread
++; (lambda () (client port))))
++; (r (socket-accept s))
++; (stream (socket-make-stream r
++; :input t
++; :output t
++; :buffering :none)))
++; (socket-close s)
++; (sb-thread:wait-on-semaphore sem)
++; (sleep 0.1)
++; (sb-thread:interrupt-thread client
++; (lambda () (throw 'stop :ok)))
++; (unless (sb-ext:wait-for (null (sb-thread::thread-interruptions client)) :timeout 5)
++; (setf result :timeout))
++; (write-char #\x stream)
++; (close stream)
++; (socket-close r)
++; (sb-thread:join-thread client :timeout 5))))))
++; (server))
++; result)
++; :ok)
+
+ (defmacro with-client-and-server (((socket-class &rest common-initargs)
+ (listen-socket-var &rest listen-address)
+@@ -505,8 +505,9 @@
+ (define-shutdown-test ,(make-name 'shutdown.client.ub8)
+ client server (unsigned-byte 8) ,direction)))))
+
+- (define-shutdown-tests :output)
+- (define-shutdown-tests :io))
++; (define-shutdown-tests :output)
++; (define-shutdown-tests :io)
++)
+
+ (defun poor-persons-random-address ()
+ (let ((base (expt 36 8)))
diff --git a/dev-lisp/sbcl/files/concurrency-test-1.2.6.patch b/dev-lisp/sbcl/files/concurrency-test-1.2.6.patch
new file mode 100644
index 000000000000..b85fc168ed0e
--- /dev/null
+++ b/dev-lisp/sbcl/files/concurrency-test-1.2.6.patch
@@ -0,0 +1,24 @@
+diff -Nuar a/contrib/sb-concurrency/tests/test-frlock.lisp b/contrib/sb-concurrency/tests/test-frlock.lisp
+--- a/contrib/sb-concurrency/tests/test-frlock.lisp 2014-11-29 19:56:58.000000000 +0100
++++ b/contrib/sb-concurrency/tests/test-frlock.lisp 2014-12-16 23:52:18.569947139 +0100
+@@ -22,9 +22,9 @@
+ #+openbsd 0.01
+ #-openbsd 0.0001)
+
+-(defun test-frlocks (&key (reader-count 100) (read-count 1000000)
++(defun test-frlocks (&key (reader-count 50) (read-count 500000)
+ (outer-read-pause 0) (inner-read-pause 0)
+- (writer-count 10) (write-count (/ 1 *minimum-sleep*))
++ (writer-count 10) (write-count 5000)
+ (outer-write-pause *minimum-sleep*) (inner-write-pause 0))
+ (let ((rw (make-frlock))
+ (a 0)
+@@ -87,7 +87,7 @@
+ #+sb-thread
+ (deftest* (frlock.1 :fails-on :win32)
+ (handler-case
+- (sb-ext:with-timeout 60 (test-frlocks))
++ (sb-ext:with-timeout 240 (test-frlocks))
+ (sb-ext:timeout (c)
+ (error "~A" c)))
+ nil
diff --git a/dev-lisp/sbcl/files/concurrency-test-1.3.15.patch b/dev-lisp/sbcl/files/concurrency-test-1.3.15.patch
new file mode 100644
index 000000000000..53b5bea06bc1
--- /dev/null
+++ b/dev-lisp/sbcl/files/concurrency-test-1.3.15.patch
@@ -0,0 +1,17 @@
+diff -r -U2 sbcl-1.3.15.orig/contrib/sb-concurrency/tests/test-frlock.lisp sbcl-1.3.15/contrib/sb-concurrency/tests/test-frlock.lisp
+--- sbcl-1.3.15.orig/contrib/sb-concurrency/tests/test-frlock.lisp 2017-02-28 20:51:29.000000000 +0100
++++ sbcl-1.3.15/contrib/sb-concurrency/tests/test-frlock.lisp 2017-03-02 18:15:41.225284441 +0100
+@@ -25,5 +25,5 @@
+ (defun test-frlocks (&key (reader-count 100) (read-count 1000000)
+ (outer-read-pause 0) (inner-read-pause 0)
+- (writer-count 10) (write-count (/ 1 *minimum-sleep*))
++ (writer-count 10) (write-count 5000)
+ (outer-write-pause *minimum-sleep*) (inner-write-pause 0))
+ (let ((rw (make-frlock))
+@@ -88,5 +88,5 @@
+ (deftest* (frlock.1)
+ (handler-case
+- (sb-ext:with-timeout 10
++ (sb-ext:with-timeout 240
+ (test-frlocks #+win32 :outer-write-pause #+win32 t ))
+ (sb-ext:timeout (c)
diff --git a/dev-lisp/sbcl/files/concurrency-test-1.5.3.patch b/dev-lisp/sbcl/files/concurrency-test-1.5.3.patch
new file mode 100644
index 000000000000..8c2e89fccfc8
--- /dev/null
+++ b/dev-lisp/sbcl/files/concurrency-test-1.5.3.patch
@@ -0,0 +1,17 @@
+diff -r -U2 sbcl-1.5.3.orig/contrib/sb-concurrency/tests/test-frlock.lisp sbcl-1.5.3/contrib/sb-concurrency/tests/test-frlock.lisp
+--- sbcl-1.5.3.orig/contrib/sb-concurrency/tests/test-frlock.lisp 2019-05-27 22:03:04.000000000 +0200
++++ sbcl-1.5.3/contrib/sb-concurrency/tests/test-frlock.lisp 2019-06-01 11:41:21.260384857 +0200
+@@ -26,5 +26,5 @@
+ (read-count 1000000)
+ (outer-read-pause 0) (inner-read-pause 0)
+- (writer-count 10) (write-count (/ 1 *minimum-sleep*))
++ (writer-count 10) (write-count 5000)
+ (outer-write-pause *minimum-sleep*) (inner-write-pause 0))
+ (let ((rw (make-frlock))
+@@ -89,5 +89,5 @@
+ (deftest* (frlock.1)
+ (handler-case
+- (sb-ext:with-timeout 20
++ (sb-ext:with-timeout 240
+ (test-frlocks #+win32 :outer-write-pause #+win32 t ))
+ (sb-ext:timeout (c)
diff --git a/dev-lisp/sbcl/files/concurrency-test-2.0.1.patch b/dev-lisp/sbcl/files/concurrency-test-2.0.1.patch
new file mode 100644
index 000000000000..e0a36a8b3a25
--- /dev/null
+++ b/dev-lisp/sbcl/files/concurrency-test-2.0.1.patch
@@ -0,0 +1,12 @@
+diff -r -U3 sbcl-2.0.1.orig/contrib/sb-concurrency/tests/test-frlock.lisp sbcl-2.0.1/contrib/sb-concurrency/tests/test-frlock.lisp
+--- sbcl-2.0.1.orig/contrib/sb-concurrency/tests/test-frlock.lisp 2020-01-27 04:26:30.000000000 +0700
++++ sbcl-2.0.1/contrib/sb-concurrency/tests/test-frlock.lisp 2020-01-30 21:53:57.750913923 +0700
+@@ -88,7 +88,7 @@
+ #+sb-thread
+ (deftest* (frlock.1)
+ (handler-case
+- (sb-ext:with-timeout 40
++ (sb-ext:with-timeout 240
+ (test-frlocks #+win32 :outer-write-pause #+win32 t ))
+ (sb-ext:timeout (c)
+ (error "~A" c)))
diff --git a/dev-lisp/sbcl/files/gentoo-fix_install_man.patch b/dev-lisp/sbcl/files/gentoo-fix_install_man.patch
new file mode 100644
index 000000000000..87a5f43c0c13
--- /dev/null
+++ b/dev-lisp/sbcl/files/gentoo-fix_install_man.patch
@@ -0,0 +1,12 @@
+diff --git a/install.sh b/install.sh
+index 1400791..ac149c1 100644
+--- a/install.sh
++++ b/install.sh
+@@ -106,6 +106,7 @@ echo "Documentation:"
+
+ # man
+ cp doc/sbcl.1 "$BUILD_ROOT$MAN_DIR"/man1/ && echo " man $BUILD_ROOT$MAN_DIR/man1/sbcl.1"
++cp doc/sbcl-asdf-install.1 "$BUILD_ROOT$MAN_DIR"/man1/ && echo " man $BUILD_ROOT$MAN_DIR/man1/sbcl-asdf-install.1"
+
+ # info
+ for info in doc/manual/*.info
diff --git a/dev-lisp/sbcl/files/sb-posix-test-1.2.15.patch b/dev-lisp/sbcl/files/sb-posix-test-1.2.15.patch
new file mode 100644
index 000000000000..517208a791e2
--- /dev/null
+++ b/dev-lisp/sbcl/files/sb-posix-test-1.2.15.patch
@@ -0,0 +1,40 @@
+diff -r -U1 sbcl-1.2.15.orig/contrib/sb-posix/posix-tests.lisp sbcl-1.2.15/contrib/sb-posix/posix-tests.lisp
+--- sbcl-1.2.15.orig/contrib/sb-posix/posix-tests.lisp 2015-08-31 00:59:03.000000000 +0600
++++ sbcl-1.2.15/contrib/sb-posix/posix-tests.lisp 2015-09-22 10:19:20.000000000 +0600
+@@ -169,19 +169,19 @@
+
+-(deftest rmdir.error.3
+- (handler-case
+- (sb-posix:rmdir #-win32 "/" #+win32 (sb-ext:posix-getenv "windir"))
+- (sb-posix:syscall-error (c)
+- (typep
+- (sb-posix:syscall-errno c)
+- '(member
+- #+(or darwin openbsd)
+- #.sb-posix:eisdir
+- #+win32
+- #.sb-posix::eacces
+- #+win32
+- #.sb-posix::enotempty
+- #+sunos
+- #.sb-posix::einval
+- #-(or darwin openbsd win32 sunos)
+- #.sb-posix::ebusy)))) t)
++;(deftest rmdir.error.3
++; (handler-case
++; (sb-posix:rmdir #-win32 "/" #+win32 (sb-ext:posix-getenv "windir"))
++; (sb-posix:syscall-error (c)
++; (typep
++; (sb-posix:syscall-errno c)
++; '(member
++; #+(or darwin openbsd)
++; #.sb-posix:eisdir
++; #+win32
++; #.sb-posix::eacces
++; #+win32
++; #.sb-posix::enotempty
++; #+sunos
++; #.sb-posix::einval
++; #-(or darwin openbsd win32 sunos)
++; #.sb-posix::ebusy)))) t)
+
diff --git a/dev-lisp/sbcl/files/sbcl-1.1.17-gentoo-fix_nopie_for_hardened_toolchain.patch b/dev-lisp/sbcl/files/sbcl-1.1.17-gentoo-fix_nopie_for_hardened_toolchain.patch
new file mode 100644
index 000000000000..bf03ada518fe
--- /dev/null
+++ b/dev-lisp/sbcl/files/sbcl-1.1.17-gentoo-fix_nopie_for_hardened_toolchain.patch
@@ -0,0 +1,22 @@
+--- sbcl-1.1.17-orig/src/runtime/Config.x86-linux 2014-03-31 03:14:22.000000000 +1100
++++ sbcl-1.1.17/src/runtime/Config.x86-linux 2014-04-28 15:34:59.822482441 +1000
+@@ -27,7 +27,7 @@
+ # (You *are* encouraged to design and implement a coherent stable
+ # interface, though.:-| As far as I (WHN 2002-05-19) know, no one is
+ # working on one and it would be a nice thing to have.)
+-LINKFLAGS += -Wl,--export-dynamic -m32
++LINKFLAGS += -Wl,--export-dynamic -m32 -nopie
+ OS_LIBS = -ldl
+
+ ifdef LISP_FEATURE_LARGEFILE
+--- sbcl-1.1.17-orig/src/runtime/Config.x86-64-linux 2014-03-31 03:14:22.000000000 +1100
++++ sbcl-1.1.17/src/runtime/Config.x86-64-linux 2014-04-28 15:35:22.364623003 +1000
+@@ -27,7 +27,7 @@
+ # (You *are* encouraged to design and implement a coherent stable
+ # interface, though.:-| As far as I (WHN 2002-05-19) know, no one is
+ # working on one and it would be a nice thing to have.)
+-LINKFLAGS += -Wl,--export-dynamic
++LINKFLAGS += -Wl,--export-dynamic -nopie
+ OS_LIBS = -ldl
+
+ ifdef LISP_FEATURE_LARGEFILE
diff --git a/dev-lisp/sbcl/files/sbcl-1.2.11-solaris.patch b/dev-lisp/sbcl/files/sbcl-1.2.11-solaris.patch
new file mode 100644
index 000000000000..850fd5d9dba7
--- /dev/null
+++ b/dev-lisp/sbcl/files/sbcl-1.2.11-solaris.patch
@@ -0,0 +1,12 @@
+diff -r -U2 sbcl-1.2.11.orig/src/runtime/Config.x86-sunos sbcl-1.2.11/src/runtime/Config.x86-sunos
+--- sbcl-1.2.11.orig/src/runtime/Config.x86-sunos 2015-04-27 20:56:50.000000000 +0600
++++ sbcl-1.2.11/src/runtime/Config.x86-sunos 2015-04-28 22:38:01.569103626 +0600
+@@ -12,6 +12,6 @@
+ CC=gcc
+ CFLAGS = -g -O2 -Wall -D__EXTENSIONS__ -D_POSIX_C_SOURCE=199506L -DSVR4 -D_REENTRANT -fno-omit-frame-pointer
+-NM = nm -xgp
+-GREP = ggrep
++NM = nm -t x -p
++GREP = grep
+
+ ASSEM_SRC = x86-assem.S ldso-stubs.S
diff --git a/dev-lisp/sbcl/files/sbcl-1.2.13-verbose-build.patch b/dev-lisp/sbcl/files/sbcl-1.2.13-verbose-build.patch
new file mode 100644
index 000000000000..ade4f0868c67
--- /dev/null
+++ b/dev-lisp/sbcl/files/sbcl-1.2.13-verbose-build.patch
@@ -0,0 +1,25 @@
+diff -r -U2 sbcl-1.2.13.orig/make.sh sbcl-1.2.13/make.sh
+--- sbcl-1.2.13.orig/make.sh 2015-06-29 01:24:03.000000000 +0600
++++ sbcl-1.2.13/make.sh 2015-06-29 15:53:04.430927942 +0600
+@@ -25,5 +25,5 @@
+ # any --xc-host parameter should be suitable for the host machine
+ # instead of the target.
+-sh make-config.sh "$@" || exit $?
++sh -x make-config.sh "$@" || exit $?
+
+ . output/prefix.def
+@@ -70,9 +70,9 @@
+ # and the make-target-*.sh scripts will take care of transferring the
+ # necessary files.
+-time sh make-host-1.sh
+-time sh make-target-1.sh
+-time sh make-host-2.sh
+-time sh make-target-2.sh
+-time sh make-target-contrib.sh
++time sh -x make-host-1.sh
++time sh -x make-target-1.sh
++time sh -x make-host-2.sh
++time sh -x make-target-2.sh
++time sh -x make-target-contrib.sh
+
+ NCONTRIBS=`find contrib -name Makefile -print | wc -l`
diff --git a/dev-lisp/sbcl/files/sbcl-1.3.11-config.patch b/dev-lisp/sbcl/files/sbcl-1.3.11-config.patch
new file mode 100644
index 000000000000..e23f1e6d9bcb
--- /dev/null
+++ b/dev-lisp/sbcl/files/sbcl-1.3.11-config.patch
@@ -0,0 +1,16 @@
+diff -r -U2 sbcl-1.3.11.orig/src/runtime/Config.x86-64-linux sbcl-1.3.11/src/runtime/Config.x86-64-linux
+--- sbcl-1.3.11.orig/src/runtime/Config.x86-64-linux 2016-10-30 23:28:43.000000000 +0700
++++ sbcl-1.3.11/src/runtime/Config.x86-64-linux 2016-11-16 23:27:37.248815622 +0700
+@@ -58,12 +58,4 @@
+ endif
+
+-# The following works for Ubuntu 16.10. There must be a better way to
+-# do this across various flavors of linux.
+-ifneq ($(shell $(CC) -dumpspecs 2>/dev/null | grep -e no-pie),)
+-CFLAGS += -fno-pie
+-LINKFLAGS += -no-pie
+-LDFLAGS += -no-pie
+-endif
+-
+ # Nothing to do for after-grovel-headers.
+ .PHONY: after-grovel-headers
diff --git a/dev-lisp/sbcl/files/sbcl-1.4.0-bsd-sockets-test.patch b/dev-lisp/sbcl/files/sbcl-1.4.0-bsd-sockets-test.patch
new file mode 100644
index 000000000000..d51bdd5c507c
--- /dev/null
+++ b/dev-lisp/sbcl/files/sbcl-1.4.0-bsd-sockets-test.patch
@@ -0,0 +1,383 @@
+diff -Nuar a/contrib/sb-bsd-sockets/tests.lisp b/contrib/sb-bsd-sockets/tests.lisp
+--- a/contrib/sb-bsd-sockets/tests.lisp 2017-09-30 18:30:58.000000000 +0200
++++ b/contrib/sb-bsd-sockets/tests.lisp 2017-10-01 18:45:57.132900158 +0200
+@@ -18,11 +18,11 @@
+ (equalp (make-inet-address "242.1.211.3") #(242 1 211 3))
+ t)
+
+-#-win32
+-(deftest make-inet6-address.1
+- (equalp (make-inet6-address "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")
+- #(255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
+- t)
++;#-win32
++;(deftest make-inet6-address.1
++; (equalp (make-inet6-address "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")
++; #(255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
++; t)
+
+ (deftest get-protocol-by-name/tcp
+ (integerp (get-protocol-by-name "tcp"))
+@@ -35,15 +35,15 @@
+ ;;; See https://bugs.launchpad.net/sbcl/+bug/659857
+ ;;; Apparently getprotobyname_r on FreeBSD says -1 and EINTR
+ ;;; for unknown protocols...
+-#-(and freebsd sb-thread)
+-#-(and dragonfly sb-thread)
+-(deftest get-protocol-by-name/error
+- (handler-case (get-protocol-by-name "nonexistent-protocol")
+- (unknown-protocol ()
+- t)
+- (:no-error ()
+- nil))
+- t)
++;#-(and freebsd sb-thread)
++;#-(and dragonfly sb-thread)
++;(deftest get-protocol-by-name/error
++; (handler-case (get-protocol-by-name "nonexistent-protocol")
++; (unknown-protocol ()
++; t)
++; (:no-error ()
++; nil))
++; t)
+
+ (when (handler-case (make-instance 'inet-socket
+ :type :stream
+@@ -102,21 +102,21 @@
+ (:no-error nil))
+ t)
+
+-#-win32
+-(deftest make-inet6-socket.smoke
+- (handler-case
+- (let ((s (make-instance 'inet6-socket :type :stream :protocol (get-protocol-by-name "tcp"))))
+- (> (socket-file-descriptor s) 1))
+- ((or address-family-not-supported protocol-not-supported-error) () t))
+- t)
+-
+-#-win32
+-(deftest make-inet6-socket.keyword
+- (handler-case
+- (let ((s (make-instance 'inet6-socket :type :stream :protocol :tcp)))
+- (> (socket-file-descriptor s) 1))
+- ((or address-family-not-supported protocol-not-supported-error) () t))
+- t)
++;#-win32
++;(deftest make-inet6-socket.smoke
++; (handler-case
++; (let ((s (make-instance 'inet6-socket :type :stream :protocol (get-protocol-by-name "tcp"))))
++; (> (socket-file-descriptor s) 1))
++; ((or address-family-not-supported protocol-not-supported-error) () t))
++; t)
++
++;#-win32
++;(deftest make-inet6-socket.keyword
++; (handler-case
++; (let ((s (make-instance 'inet6-socket :type :stream :protocol :tcp)))
++; (> (socket-file-descriptor s) 1))
++; ((or address-family-not-supported protocol-not-supported-error) () t))
++; t)
+
+ #+ipv4-support
+ (deftest* (non-block-socket)
+@@ -125,55 +125,55 @@
+ (non-blocking-mode s))
+ t)
+
+-#+ipv4-support
+-(deftest inet-socket-bind
+- (let* ((tcp (get-protocol-by-name "tcp"))
+- (address (make-inet-address "127.0.0.1"))
+- (s1 (make-instance 'inet-socket :type :stream :protocol tcp))
+- (s2 (make-instance 'inet-socket :type :stream :protocol tcp)))
+- (unwind-protect
+- ;; Given the functions we've got so far, if you can think of a
+- ;; better way to make sure the bind succeeded than trying it
+- ;; twice, let me know
+- (progn
+- (socket-bind s1 address 0)
+- (handler-case
+- (let ((port (nth-value 1 (socket-name s1))))
+- (socket-bind s2 address port)
+- nil)
+- (address-in-use-error () t)))
+- (socket-close s1)
+- (socket-close s2)))
+- t)
+-
+-#-win32
+-(deftest inet6-socket-bind
+- (handler-case
+- (let* ((tcp (get-protocol-by-name "tcp"))
+- (address (make-inet6-address "::1"))
+- (s1 (make-instance 'inet6-socket :type :stream :protocol tcp))
+- (s2 (make-instance 'inet6-socket :type :stream :protocol tcp)))
+- (unwind-protect
+- ;; Given the functions we've got so far, if you can think of a
+- ;; better way to make sure the bind succeeded than trying it
+- ;; twice, let me know
+- (handler-case
+- (socket-bind s1 address 0)
+- (socket-error ()
+- ;; This may mean no IPv6 support, can't fail a test
+- ;; because of that (address-family-not-supported doesn't catch that)
+- t)
+- (:no-error (x)
+- (declare (ignore x))
+- (handler-case
+- (let ((port (nth-value 1 (socket-name s1))))
+- (socket-bind s2 address port)
+- nil)
+- (address-in-use-error () t))))
+- (socket-close s1)
+- (socket-close s2)))
+- ((or address-family-not-supported protocol-not-supported-error) () t))
+- t)
++;#+ipv4-support
++;(deftest inet-socket-bind
++; (let* ((tcp (get-protocol-by-name "tcp"))
++; (address (make-inet-address "127.0.0.1"))
++; (s1 (make-instance 'inet-socket :type :stream :protocol tcp))
++; (s2 (make-instance 'inet-socket :type :stream :protocol tcp)))
++; (unwind-protect
++; ;; Given the functions we've got so far, if you can think of a
++; ;; better way to make sure the bind succeeded than trying it
++; ;; twice, let me know
++; (progn
++; (socket-bind s1 address 0)
++; (handler-case
++; (let ((port (nth-value 1 (socket-name s1))))
++; (socket-bind s2 address port)
++; nil)
++; (address-in-use-error () t)))
++; (socket-close s1)
++; (socket-close s2)))
++; t)
++
++;#-win32
++;(deftest inet6-socket-bind
++; (handler-case
++; (let* ((tcp (get-protocol-by-name "tcp"))
++; (address (make-inet6-address "::1"))
++; (s1 (make-instance 'inet6-socket :type :stream :protocol tcp))
++; (s2 (make-instance 'inet6-socket :type :stream :protocol tcp)))
++; (unwind-protect
++; ;; Given the functions we've got so far, if you can think of a
++; ;; better way to make sure the bind succeeded than trying it
++; ;; twice, let me know
++; (handler-case
++; (socket-bind s1 address 0)
++; (socket-error ()
++; ;; This may mean no IPv6 support, can't fail a test
++; ;; because of that (address-family-not-supported doesn't catch that)
++; t)
++; (:no-error (x)
++; (declare (ignore x))
++; (handler-case
++; (let ((port (nth-value 1 (socket-name s1))))
++; (socket-bind s2 address port)
++; nil)
++; (address-in-use-error () t))))
++; (socket-close s1)
++; (socket-close s2)))
++; ((or address-family-not-supported protocol-not-supported-error) () t))
++; t)
+
+ #+ipv4-support
+ (deftest* (simple-sockopt-test)
+@@ -241,37 +241,37 @@
+ ;;; to look at /etc/syslog.conf or local equivalent to find out where
+ ;;; the message ended up
+
+-#-win32
+-(deftest simple-local-client
+- (progn
+- ;; SunOS (Solaris) and Darwin systems don't have a socket at
+- ;; /dev/log. We might also be building in a chroot or
+- ;; something, so don't fail this test just because the file is
+- ;; unavailable, or if it's a symlink to some weird character
+- ;; device.
+- (when (block nil
+- (handler-bind ((sb-posix:syscall-error
+- (lambda (e)
+- (declare (ignore e))
+- (return nil))))
+- (sb-posix:s-issock
+- (sb-posix::stat-mode (sb-posix:stat "/dev/log")))))
+- (let ((s (make-instance 'local-socket :type :datagram)))
+- (format t "Connecting ~A... " s)
+- (finish-output)
+- (handler-case
+- (socket-connect s "/dev/log")
+- (sb-bsd-sockets::socket-error ()
+- (setq s (make-instance 'local-socket :type :stream))
+- (format t "failed~%Retrying with ~A... " s)
+- (finish-output)
+- (socket-connect s "/dev/log")))
+- (format t "ok.~%")
+- (let ((stream (socket-make-stream s :input t :output t :buffering :none)))
+- (format stream
+- "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored"))))
+- t)
+- t)
++;#-win32
++;(deftest simple-local-client
++; (progn
++; ;; SunOS (Solaris) and Darwin systems don't have a socket at
++; ;; /dev/log. We might also be building in a chroot or
++; ;; something, so don't fail this test just because the file is
++; ;; unavailable, or if it's a symlink to some weird character
++; ;; device.
++; (when (block nil
++; (handler-bind ((sb-posix:syscall-error
++; (lambda (e)
++; (declare (ignore e))
++; (return nil))))
++; (sb-posix:s-issock
++; (sb-posix::stat-mode (sb-posix:stat "/dev/log")))))
++; (let ((s (make-instance 'local-socket :type :datagram)))
++; (format t "Connecting ~A... " s)
++; (finish-output)
++; (handler-case
++; (socket-connect s "/dev/log")
++; (sb-bsd-sockets::socket-error ()
++; (setq s (make-instance 'local-socket :type :stream))
++; (format t "failed~%Retrying with ~A... " s)
++; (finish-output)
++; (socket-connect s "/dev/log")))
++; (format t "ok.~%")
++; (let ((stream (socket-make-stream s :input t :output t :buffering :none)))
++; (format stream
++; "<7>bsd-sockets: Don't panic. We're testing local-domain client code; this message can safely be ignored"))))
++; t)
++; t)
+
+ ;;; these require that the internet (or bits of it, at least) is available
+
+@@ -387,60 +387,60 @@
+ (format t "Received ~A bytes from ~A:~A - ~A ~%"
+ len address port (subseq buf 0 (min 10 len)))))))
+
+-#+(and ipv4-support sb-thread)
+-(deftest interrupt-io
+- (let (result)
+- (labels
+- ((client (port)
+- (setf result
+- (let ((s (make-instance 'inet-socket
+- :type :stream
+- :protocol :tcp)))
+- (socket-connect s #(127 0 0 1) port)
+- (let ((stream (socket-make-stream s
+- :input t
+- :output t
+- :buffering :none)))
+- (handler-case
+- (prog1
+- (catch 'stop
+- (progn
+- (read-char stream)
+- (sleep 0.1)
+- (sleep 0.1)
+- (sleep 0.1)))
+- (close stream))
+- (error (c)
+- c))))))
+- (server ()
+- (let ((s (make-instance 'inet-socket
+- :type :stream
+- :protocol :tcp)))
+- (setf (sockopt-reuse-address s) t)
+- (socket-bind s (make-inet-address "127.0.0.1") 0)
+- (socket-listen s 5)
+- (multiple-value-bind (* port)
+- (socket-name s)
+- (let* ((client (sb-thread:make-thread
+- (lambda () (client port))))
+- (r (socket-accept s))
+- (stream (socket-make-stream r
+- :input t
+- :output t
+- :buffering :none))
+- (ok :ok))
+- (socket-close s)
+- (sleep 5)
+- (sb-thread:interrupt-thread client
+- (lambda () (throw 'stop ok)))
+- (sleep 5)
+- (setf ok :not-ok)
+- (write-char #\x stream)
+- (close stream)
+- (socket-close r))))))
+- (server))
+- result)
+- :ok)
++;#+(and ipv4-support sb-thread)
++;(deftest interrupt-io
++; (let (result)
++; (labels
++; ((client (port)
++; (setf result
++; (let ((s (make-instance 'inet-socket
++; :type :stream
++; :protocol :tcp)))
++; (socket-connect s #(127 0 0 1) port)
++; (let ((stream (socket-make-stream s
++; :input t
++; :output t
++; :buffering :none)))
++; (handler-case
++; (prog1
++; (catch 'stop
++; (progn
++; (read-char stream)
++; (sleep 0.1)
++; (sleep 0.1)
++; (sleep 0.1)))
++; (close stream))
++; (error (c)
++; c))))))
++; (server ()
++; (let ((s (make-instance 'inet-socket
++; :type :stream
++; :protocol :tcp)))
++; (setf (sockopt-reuse-address s) t)
++; (socket-bind s (make-inet-address "127.0.0.1") 0)
++; (socket-listen s 5)
++; (multiple-value-bind (* port)
++; (socket-name s)
++; (let* ((client (sb-thread:make-thread
++; (lambda () (client port))))
++; (r (socket-accept s))
++; (stream (socket-make-stream r
++; :input t
++; :output t
++; :buffering :none))
++; (ok :ok))
++; (socket-close s)
++; (sleep 5)
++; (sb-thread:interrupt-thread client
++; (lambda () (throw 'stop ok)))
++; (sleep 5)
++; (setf ok :not-ok)
++; (write-char #\x stream)
++; (close stream)
++; (socket-close r))))))
++; (server))
++; result)
++; :ok)
+
+ (defmacro with-client-and-server (((socket-class &rest common-initargs)
+ (listen-socket-var &rest listen-address)
+@@ -503,8 +503,9 @@
+ (define-shutdown-test ,(make-name 'shutdown.client.ub8)
+ client server (unsigned-byte 8) ,direction)))))
+
+- (define-shutdown-tests :output)
+- (define-shutdown-tests :io))
++; (define-shutdown-tests :output)
++; (define-shutdown-tests :io)
++)
+
+ #+linux
+ (deftest abstract.smoke
diff --git a/dev-lisp/sbcl/files/sbcl-1.4.0-verbose-build.patch b/dev-lisp/sbcl/files/sbcl-1.4.0-verbose-build.patch
new file mode 100644
index 000000000000..27ad3b0758d4
--- /dev/null
+++ b/dev-lisp/sbcl/files/sbcl-1.4.0-verbose-build.patch
@@ -0,0 +1,29 @@
+diff -Nuar a/make.sh b/make.sh
+--- a/make.sh 2017-09-30 18:30:58.000000000 +0200
++++ b/make.sh 2017-10-01 18:08:26.742909789 +0200
+@@ -24,7 +24,7 @@
+ # thing" when run on the target machine, with the minor caveat that
+ # any --xc-host parameter should be suitable for the host machine
+ # instead of the target.
+-sh make-config.sh "$@" || exit $?
++sh -x make-config.sh "$@" || exit $?
+
+ . output/prefix.def
+ . output/build-config
+@@ -76,11 +76,11 @@
+ $@
+ fi
+ }
+-maybetime sh make-host-1.sh
+-maybetime sh make-target-1.sh
+-maybetime sh make-host-2.sh
+-maybetime sh make-target-2.sh
+-maybetime sh make-target-contrib.sh
++maybetime sh -x make-host-1.sh
++maybetime sh -x make-target-1.sh
++maybetime sh -x make-host-2.sh
++maybetime sh -x make-target-2.sh
++maybetime sh -x make-target-contrib.sh
+
+ NCONTRIBS=`find contrib -name Makefile -print | wc -l`
+ NPASSED=`find obj/asdf-cache -name test-passed.test-report -print | wc -l`
diff --git a/dev-lisp/sbcl/files/verbose-build-2.0.3.patch b/dev-lisp/sbcl/files/verbose-build-2.0.3.patch
new file mode 100644
index 000000000000..263436ab5e00
--- /dev/null
+++ b/dev-lisp/sbcl/files/verbose-build-2.0.3.patch
@@ -0,0 +1,29 @@
+diff -U3 -r sbcl-2.0.3.orig/make.sh sbcl-2.0.3/make.sh
+--- sbcl-2.0.3.orig/make.sh 2020-03-29 03:58:29.000000000 +0700
++++ sbcl-2.0.3/make.sh 2020-04-04 19:56:16.510279232 +0700
+@@ -24,7 +24,7 @@
+ # thing" when run on the target machine, with the minor caveat that
+ # any --xc-host parameter should be suitable for the host machine
+ # instead of the target.
+-sh make-config.sh "$@" --check-host-lisp || exit $?
++sh -x make-config.sh "$@" --check-host-lisp || exit $?
+
+ . output/prefix.def
+ . output/build-config
+@@ -76,11 +76,11 @@
+ $@
+ fi
+ }
+-maybetime sh make-host-1.sh
+-maybetime sh make-target-1.sh
+-maybetime sh make-host-2.sh
+-maybetime sh make-target-2.sh
+-maybetime sh make-target-contrib.sh
++maybetime sh -x make-host-1.sh
++maybetime sh -x make-target-1.sh
++maybetime sh -x make-host-2.sh
++maybetime sh -x make-target-2.sh
++maybetime sh -x make-target-contrib.sh
+
+ # contrib/Makefile shouldn't be counted in NCONTRIBS.
+ # "find contrib/* -name Makefile" would still find contrib/./Makefile.
diff --git a/dev-lisp/sbcl/metadata.xml b/dev-lisp/sbcl/metadata.xml
new file mode 100644
index 000000000000..9819bc9a2592
--- /dev/null
+++ b/dev-lisp/sbcl/metadata.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription>Steel Bank Common Lisp is an open source Common
+ Lisp implementation. It provides an integrated native compiler,
+ interpreter, and debugger. SBCL is a fork off of the main branch
+ of CMUCL. SBCL is distinguished from CMUCL by a greater emphasis
+ on maintainability. In particular, the SBCL system can be built
+ directly from its source code, so that the output corresponds to
+ the source code in a controlled, verifiable way, and arbitrary
+ changes can be made to the system without causing bootstrapping
+ problems. SBCL also places less emphasis than CMU CL does on new
+ non-ANSI extensions, or on backward compatibility with old
+ non-ANSI features. Support for native threading on GNU/Linux is
+ available for the x86 and amd64 platforms using an NPTL enabled
+ GLIBC. SBCL 0.8.17 and later support Unicode.
+</longdescription>
+ <use>
+ <flag name="pax_kernel">Enable if the user plans to run the package under a pax enabled hardened kernel</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">sbcl</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/sbcl/sbcl-1.3.11.ebuild b/dev-lisp/sbcl/sbcl-1.3.11.ebuild
new file mode 100644
index 000000000000..0859a02a7834
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-1.3.11.ebuild
@@ -0,0 +1,242 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.2.7
+BV_AMD64=1.3.11
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.3.9
+BV_ARM64=1.3.11
+BV_PPC_MACOS=1.0.47
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_SPARC_SOLARIS=1.0.23
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="amd64 ppc sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ eapply "${FILESDIR}"/gentoo-fix_install_man.patch
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-1.2.6.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/bsd-sockets-test-1.2.11.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+ # bug #599902
+ eapply "${FILESDIR}"/${PN}-1.3.11-config.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.2.13-verbose-build.patch
+
+ # To make the hardened compiler NOT compile with -fPIE -pie
+ if gcc-specs-pie ; then
+ einfo "Disabling PIE..."
+ eapply "${FILESDIR}"/${PN}-1.1.17-gentoo-fix_nopie_for_hardened_toolchain.patch
+ fi
+
+ eapply_user
+
+ # bug #526194
+ sed -e "s@CFLAGS =.*\$@CFLAGS = ${CFLAGS} -g -Wall -Wsign-compare@" \
+ -e "s@LINKFLAGS =.*\$@LINKFLAGS = ${LDFLAGS} -g@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ strip-unsupported-flags ; filter-flags -fomit-frame-pointer
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug 174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-1.4.9.ebuild b/dev-lisp/sbcl/sbcl-1.4.9.ebuild
new file mode 100644
index 000000000000..c642c0c994d9
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-1.4.9.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=1.4.8
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.3.12
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="amd64 ppc ~sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-1.3.15.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.4.0-verbose-build.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-1.5.6.ebuild b/dev-lisp/sbcl/sbcl-1.5.6.ebuild
new file mode 100644
index 000000000000..a7b12bfec041
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-1.5.6.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=1.5.6
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-1.5.3.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.4.0-verbose-build.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-1.5.7.ebuild b/dev-lisp/sbcl/sbcl-1.5.7.ebuild
new file mode 100644
index 000000000000..a7b12bfec041
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-1.5.7.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=1.5.6
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-1.5.3.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.4.0-verbose-build.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-1.5.8.ebuild b/dev-lisp/sbcl/sbcl-1.5.8.ebuild
new file mode 100644
index 000000000000..38e70dcf9c50
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-1.5.8.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=1.5.8
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-1.5.3.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.4.0-verbose-build.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-2.0.0.ebuild b/dev-lisp/sbcl/sbcl-2.0.0.ebuild
new file mode 100644
index 000000000000..0bde7a4ffe20
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-2.0.0.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=2.0.0
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-1.5.3.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.4.0-verbose-build.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-2.0.1.ebuild b/dev-lisp/sbcl/sbcl-2.0.1.ebuild
new file mode 100644
index 000000000000..63010e5b32f4
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-2.0.1.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=2.0.1
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-2.0.1.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/${PN}-1.4.0-verbose-build.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-2.0.3.ebuild b/dev-lisp/sbcl/sbcl-2.0.3.ebuild
new file mode 100644
index 000000000000..819f9f5c7b1e
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-2.0.3.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=2.0.3
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-2.0.1.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/verbose-build-2.0.3.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-2.0.4.ebuild b/dev-lisp/sbcl/sbcl-2.0.4.ebuild
new file mode 100644
index 000000000000..6c4368d0f07a
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-2.0.4.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=2.0.4
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-2.0.1.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/${PN}-1.4.0-bsd-sockets-test.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/verbose-build-2.0.3.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/sbcl/sbcl-2.0.5.ebuild b/dev-lisp/sbcl/sbcl-2.0.5.ebuild
new file mode 100644
index 000000000000..8db97f2a1f77
--- /dev/null
+++ b/dev-lisp/sbcl/sbcl-2.0.5.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib eutils flag-o-matic pax-utils toolchain-funcs
+
+#same order as http://www.sbcl.org/platform-table.html
+BV_X86=1.4.3
+BV_AMD64=2.0.5
+BV_PPC=1.2.7
+BV_SPARC=1.0.28
+BV_ALPHA=1.0.28
+BV_ARM=1.4.11
+BV_ARM64=1.4.2
+BV_X86_MACOS=1.1.6
+BV_X64_MACOS=1.2.11
+BV_PPC_MACOS=1.0.47
+BV_X86_SOLARIS=1.2.7
+BV_X64_SOLARIS=1.2.7
+BV_SPARC_SOLARIS=1.0.23
+
+DESCRIPTION="Steel Bank Common Lisp (SBCL) is an implementation of ANSI Common Lisp"
+HOMEPAGE="http://sbcl.sourceforge.net/"
+SRC_URI="mirror://sourceforge/sbcl/${P}-source.tar.bz2
+ x86? ( mirror://sourceforge/sbcl/${PN}-${BV_X86}-x86-linux-binary.tar.bz2 )
+ amd64? ( mirror://sourceforge/sbcl/${PN}-${BV_AMD64}-x86-64-linux-binary.tar.bz2 )
+ ppc? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC}-powerpc-linux-binary.tar.bz2 )
+ sparc? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC}-sparc-linux-binary.tar.bz2 )
+ alpha? ( mirror://sourceforge/sbcl/${PN}-${BV_ALPHA}-alpha-linux-binary.tar.bz2 )
+ arm? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM}-armhf-linux-binary.tar.bz2 )
+ arm64? ( mirror://sourceforge/sbcl/${PN}-${BV_ARM64}-arm64-linux-binary.tar.bz2 )
+ x86-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_MACOS}-x86-darwin-binary.tar.bz2 )
+ x64-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_MACOS}-x86-64-darwin-binary.tar.bz2 )
+ ppc-macos? ( mirror://sourceforge/sbcl/${PN}-${BV_PPC_MACOS}-powerpc-darwin-binary.tar.bz2 )
+ x86-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X86_SOLARIS}-x86-solaris-binary.tar.bz2 )
+ x64-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_X64_SOLARIS}-x86-64-solaris-binary.tar.bz2 )
+ sparc-solaris? ( mirror://sourceforge/sbcl/${PN}-${BV_SPARC_SOLARIS}-sparc-solaris-binary.tar.bz2 )"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="debug doc source +threads +unicode pax_kernel zlib"
+
+CDEPEND=">=dev-lisp/asdf-3.1:="
+DEPEND="${CDEPEND}
+ doc? ( sys-apps/texinfo >=media-gfx/graphviz-2.26.0 )
+ pax_kernel? ( sys-apps/elfix )"
+RDEPEND="${CDEPEND}
+ !prefix? ( elibc_glibc? ( >=sys-libs/glibc-2.6 ) )"
+
+# Disable warnings about executable stacks, as this won't be fixed soon by upstream
+QA_EXECSTACK="usr/bin/sbcl"
+
+CONFIG="${S}/customize-target-features.lisp"
+ENVD="${T}/50sbcl"
+
+# Prevent ASDF from using the system libraries
+CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)"
+ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)"
+
+usep() {
+ use ${1} && echo "true" || echo "false"
+}
+
+sbcl_feature() {
+ echo "$( [[ ${1} == "true" ]] && echo "(enable ${2})" || echo "(disable ${2})")" >> "${CONFIG}"
+}
+
+sbcl_apply_features() {
+ sed 's/^X//' > "${CONFIG}" <<-'EOF'
+ (lambda (list)
+ X (flet ((enable (x) (pushnew x list))
+ X (disable (x) (setf list (remove x list))))
+ EOF
+ if use x86 || use amd64; then
+ sbcl_feature "$(usep threads)" ":sb-thread"
+ fi
+ sbcl_feature "true" ":sb-ldb"
+ sbcl_feature "false" ":sb-test"
+ sbcl_feature "$(usep unicode)" ":sb-unicode"
+ sbcl_feature "$(usep zlib)" ":sb-core-compression"
+ sbcl_feature "$(usep debug)" ":sb-xref-for-internals"
+ sed 's/^X//' >> "${CONFIG}" <<-'EOF'
+ X )
+ X list)
+ EOF
+ cat "${CONFIG}"
+}
+
+src_unpack() {
+ unpack ${A}
+ mv sbcl-*-* sbcl-binary || die
+ cd "${S}"
+}
+
+src_prepare() {
+ # bug #468482
+ eapply "${FILESDIR}"/concurrency-test-2.0.1.patch
+ # bugs #486552, #527666, #517004
+ eapply "${FILESDIR}"/bsd-sockets-test-2.0.5.patch
+ # bugs #560276, #561018
+ eapply "${FILESDIR}"/sb-posix-test-1.2.15.patch
+
+ eapply "${FILESDIR}"/${PN}-1.2.11-solaris.patch
+ eapply "${FILESDIR}"/verbose-build-2.0.3.patch
+
+ eapply_user
+
+ # Make sure the *FLAGS variables are sane.
+ # sbcl needs symbols in resulting binaries, so building with the -s linker flag will fail.
+ strip-unsupported-flags
+ filter-flags -fomit-frame-pointer -Wl,-s
+ filter-ldflags -s
+
+ # original bugs #526194, #620532
+ # this broke no-pie default builds, c.f. bug #632670
+ # Pass CFLAGS down by appending our value, to let users override
+ # the default values.
+ # Keep passing LDFLAGS down via the LINKFLAGS variable.
+ sed -e "s@\(CFLAGS += -g .*\)\$@\1 ${CFLAGS}@" \
+ -e "s@LINKFLAGS += -g\$@LINKFLAGS += ${LDFLAGS}@" \
+ -i src/runtime/GNUmakefile || die
+
+ sed -e "s@SBCL_PREFIX=\"/usr/local\"@SBCL_PREFIX=\"${EPREFIX}/usr\"@" \
+ -i make-config.sh || die
+
+ # Use installed ASDF version
+ cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
+ # Avoid installation of ASDF info page. See bug #605752
+ sed '/INFOFILES/s/asdf.info//' -i doc/manual/Makefile || die
+
+ use source && sed 's%"$(BUILD_ROOT)%$(MODULE).lisp "$(BUILD_ROOT)%' -i contrib/vanilla-module.mk
+
+ # Some shells(such as dash) don't have "time" as builtin
+ # and we don't want to DEPEND on sys-process/time
+ sed "s,^time ,," -i make.sh || die
+ sed "s,/lib,/$(get_libdir),g" -i install.sh || die
+ # #define SBCL_HOME ...
+ sed "s,/usr/local/lib,${EPREFIX}/usr/$(get_libdir),g" -i src/runtime/runtime.c || die
+ # change location of /etc/sbclrc ...
+ sed "s,/etc/sbclrc,${EPREFIX}/etc/sbclrc,g" -i src/code/toplevel.lisp || die
+
+ find . -type f -name .cvsignore -delete
+}
+
+src_configure() {
+ # customizing SBCL version as per
+ # http://sbcl.cvs.sourceforge.net/sbcl/sbcl/doc/PACKAGING-SBCL.txt?view=markup
+ echo -e ";;; Auto-generated by Gentoo\n\"gentoo-${PR}\"" > branch-version.lisp-expr
+
+ # applying customizations
+ sbcl_apply_features
+}
+
+src_compile() {
+ local bindir="${WORKDIR}"/sbcl-binary
+
+ if use pax_kernel ; then
+ # To disable PaX on hardened systems
+ pax-mark -mr "${bindir}"/src/runtime/sbcl
+
+ # Hack to disable PaX on second GENESIS stage
+ sed -i -e '/^[ \t]*echo \/\/doing warm init - compilation phase$/a\ paxmark.sh -mr \.\/src\/runtime\/sbcl' \
+ "${S}"/make-target-2.sh || die "Cannot disable PaX on second GENESIS runtime"
+ fi
+
+ # clear the environment to get rid of non-ASCII strings, see bug #174702
+ # set HOME for paludis
+ env - HOME="${T}" PATH="${PATH}" \
+ CC="$(tc-getCC)" AS="$(tc-getAS)" LD="$(tc-getLD)" \
+ CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" ASFLAGS="${ASFLAGS}" LDFLAGS="${LDFLAGS}" \
+ GNUMAKE=make ./make.sh \
+ "sh ${bindir}/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger" \
+ || die "make failed"
+
+ # need to set HOME because libpango(used by graphviz) complains about it
+ if use doc; then
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/manual info html || die "Cannot build manual"
+ env - HOME="${T}" PATH="${PATH}" \
+ CL_SOURCE_REGISTRY="(:source-registry :ignore-inherited-configuration)" \
+ ASDF_OUTPUT_TRANSLATIONS="(:output-translations :ignore-inherited-configuration)" \
+ make -C doc/internals info html || die "Cannot build internal docs"
+ fi
+}
+
+src_test() {
+ ewarn "Unfortunately, it is known that some tests fail eg."
+ ewarn "run-program.impure.lisp. This is an issue of the upstream's"
+ ewarn "development and not of Gentoo's side. Please, before filing"
+ ewarn "any bug(s) search for older submissions. Thank you."
+ time ( cd tests && sh run-tests.sh )
+}
+
+src_install() {
+ # install system-wide initfile
+ dodir /etc/
+ sed 's/^X//' > "${ED}"/etc/sbclrc <<-EOF
+ ;;; The following is required if you want source location functions to
+ ;;; work in SLIME, for example.
+ X
+ (setf (logical-pathname-translations "SYS")
+ X '(("SYS:SRC;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/src/**/*.*")
+ X ("SYS:CONTRIB;**;*.*.*" #p"${EPREFIX}/usr/$(get_libdir)/sbcl/**/*.*")))
+ X
+ ;;; Setup ASDF2
+ (load "${EPREFIX}/etc/common-lisp/gentoo-init.lisp")
+ EOF
+
+ # Install documentation
+ unset SBCL_HOME
+ INSTALL_ROOT="${ED}/usr" LIB_DIR="${EPREFIX}/usr/$(get_libdir)" DOC_DIR="${ED}/usr/share/doc/${PF}" \
+ sh install.sh || die "install.sh failed"
+
+ # bug #517008
+ pax-mark -mr "${D}"/usr/bin/sbcl
+
+ # rm empty directories lest paludis complain about this
+ find "${ED}" -empty -type d -exec rmdir -v {} +
+
+ if use doc; then
+ dodoc -r doc/internals/sbcl-internals
+
+ doinfo doc/manual/*.info*
+ doinfo doc/internals/sbcl-internals.info
+
+ docinto internals-notes
+ dodoc doc/internals-notes/*
+ else
+ rm -Rv "${ED}/usr/share/doc/${PF}" || die
+ fi
+
+ # install the SBCL source
+ if use source; then
+ ./clean.sh
+ cp -av src "${ED}/usr/$(get_libdir)/sbcl/" || die
+ fi
+
+ # necessary for running newly-saved images
+ echo "SBCL_HOME=${EPREFIX}/usr/$(get_libdir)/${PN}" > "${ENVD}"
+ echo "SBCL_SOURCE_ROOT=${EPREFIX}/usr/$(get_libdir)/${PN}/src" >> "${ENVD}"
+ doenvd "${ENVD}"
+}
diff --git a/dev-lisp/trivial-gray-streams/Manifest b/dev-lisp/trivial-gray-streams/Manifest
new file mode 100644
index 000000000000..c9f35cfbfbbd
--- /dev/null
+++ b/dev-lisp/trivial-gray-streams/Manifest
@@ -0,0 +1 @@
+DIST trivial-gray-streams-20170830.tar.bz2 7520 BLAKE2B 2080b9ee30249c61c21f88663a247323afe2854c6444467d68fbdc42df9b8868cc49c305ab319ca88cf37ee8b0d423681c01174bb2a26d373a0c9427f2ad8e4e SHA512 4fbcfff5f2875daaf9c9bb286e2f753fccbb9840bb3c3593b9755204475aaf34241c1ffc2c93b5bf2c3428400e91082b01f15812eb51251afcabe9a57d5df3fa
diff --git a/dev-lisp/trivial-gray-streams/metadata.xml b/dev-lisp/trivial-gray-streams/metadata.xml
new file mode 100644
index 000000000000..a1f8e41e6e61
--- /dev/null
+++ b/dev-lisp/trivial-gray-streams/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+ </maintainer>
+ <longdescription lang="en">
+ This system provides an extremely thin compatibility layer for
+ Gray streams
+ </longdescription>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/trivial-gray-streams/trivial-gray-streams-20170830.ebuild b/dev-lisp/trivial-gray-streams/trivial-gray-streams-20170830.ebuild
new file mode 100644
index 000000000000..63d5924ffdb0
--- /dev/null
+++ b/dev-lisp/trivial-gray-streams/trivial-gray-streams-20170830.ebuild
@@ -0,0 +1,17 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="A thin compatibility layer between Gray Stream Common Lisp implementations"
+HOMEPAGE="https://common-lisp.net/project/trivial-gray-streams/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~sparc x86"
+IUSE=""
+
+RDEPEND="!dev-lisp/cl-${PN}"
diff --git a/dev-lisp/trivial-gray-streams/trivial-gray-streams-99999999.ebuild b/dev-lisp/trivial-gray-streams/trivial-gray-streams-99999999.ebuild
new file mode 100644
index 000000000000..9fa802eff228
--- /dev/null
+++ b/dev-lisp/trivial-gray-streams/trivial-gray-streams-99999999.ebuild
@@ -0,0 +1,16 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3 git-r3
+
+DESCRIPTION="A thin compatibility layer between Gray Stream Common Lisp implementations"
+HOMEPAGE="https://common-lisp.net/project/trivial-gray-streams/"
+EGIT_REPO_URI="https://github.com/${PN}/${PN}"
+
+LICENSE="MIT"
+SLOT="0"
+IUSE=""
+
+RDEPEND="!dev-lisp/cl-${PN}"
diff --git a/dev-lisp/uiop/Manifest b/dev-lisp/uiop/Manifest
new file mode 100644
index 000000000000..112e97ce168f
--- /dev/null
+++ b/dev-lisp/uiop/Manifest
@@ -0,0 +1,3 @@
+DIST asdf-3.1.5.tar.gz 400359 BLAKE2B 586a66799a37259694baa673f2849e183fac5fedfe5ff5c92529d47fc0954d40b48bbc095db926b9ea2214b551729c269d0925e4396a52310b72fd5f21842f49 SHA512 937d45eabea0853cd1b2e78e84cf33e7b55065857ffcf49fd87ccd60e21ae09c6dc7ab3649d48b37aeb1beaeeaf6c816e5ce035f0283707105296fb976044516
+DIST asdf-3.3.1.tar.gz 479255 BLAKE2B 5161b79741a52721eaa4da80a61bbe51e924967ecb744a087fdcbd99407abcc42faf39eafe6d30af7dd8af751a80caaf23e93ce42aa5f584123a1e8b528cc613 SHA512 bf5efec4518eb5312ce743c0fbe60c587bebfe26c36c833c163d67bf8631e18eeb293f2185e547f6be10da061a17f024d9f4a3a0808727d7b9b3a7d7a0faf133
+DIST uiop-3.3.2.tar.gz 98207 BLAKE2B a003fabde2ee66244e48caa5ae319fb7ce872dc72cdb8f66c39cfa97a5fc5307de667b48a403432cc3c5cf3d8bfa2e3d330ee91b6251add532ec462d0c4c1d29 SHA512 3af6bfc7d0aa6ee102d3d9cbef3277026d9d7ac4811f6c966b4a9f84ab1e0f128822bddcf8b221288a3c895fc5be377f0ae907e2a08f38e6b09f36e5b4635ecc
diff --git a/dev-lisp/uiop/metadata.xml b/dev-lisp/uiop/metadata.xml
new file mode 100644
index 000000000000..136dc046ea75
--- /dev/null
+++ b/dev-lisp/uiop/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>common-lisp@gentoo.org</email>
+ <name>Gentoo Common Lisp Project</name>
+</maintainer>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-lisp/uiop/uiop-3.1.5.ebuild b/dev-lisp/uiop/uiop-3.1.5.ebuild
new file mode 100644
index 000000000000..b78cf1fb0b7a
--- /dev/null
+++ b/dev-lisp/uiop/uiop-3.1.5.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+inherit eutils
+
+DESCRIPTION="UIOP is a portability layer spun off ASDF3"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/asdf/archives/asdf-${PV}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~ia64 ppc ppc64 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE=""
+
+RDEPEND="~dev-lisp/asdf-${PV}"
+
+S="${WORKDIR}/asdf-${PV}/${PN}"
+
+src_install() {
+ insinto /usr/share/common-lisp/source/${PN}
+ doins -r contrib *.lisp ../version.lisp-expr uiop.asd asdf-driver.asd
+ dodir /usr/share/common-lisp/systems
+ dosym /usr/share/common-lisp/source/${PN}/uiop.asd /usr/share/common-lisp/systems/uiop.asd
+ dosym /usr/share/common-lisp/source/${PN}/asdf-driver.asd /usr/share/common-lisp/systems/asdf-driver.asd
+}
diff --git a/dev-lisp/uiop/uiop-3.3.1.ebuild b/dev-lisp/uiop/uiop-3.3.1.ebuild
new file mode 100644
index 000000000000..354fca8768ef
--- /dev/null
+++ b/dev-lisp/uiop/uiop-3.3.1.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="UIOP is a portability layer spun off ASDF3"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/asdf/archives/asdf-${PV}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE=""
+
+RDEPEND="~dev-lisp/asdf-${PV}"
+
+S="${WORKDIR}/asdf-${PV}/${PN}"
+
+src_install() {
+ insinto "${CLSOURCEROOT}/${PN}"
+ doins -r contrib *.lisp ../version.lisp-expr "${PN}.asd" asdf-driver.asd
+ dodir "${CLSYSTEMROOT}"
+ dosym "${CLSOURCEROOT}/${PN}/${PN}.asd" "${CLSYSTEMROOT}/${PN}.asd"
+ dosym "${CLSOURCEROOT}/${PN}/asdf-driver.asd" "${CLSYSTEMROOT}/asdf-driver.asd"
+}
diff --git a/dev-lisp/uiop/uiop-3.3.2.ebuild b/dev-lisp/uiop/uiop-3.3.2.ebuild
new file mode 100644
index 000000000000..7b084004812d
--- /dev/null
+++ b/dev-lisp/uiop/uiop-3.3.2.ebuild
@@ -0,0 +1,17 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit common-lisp-3
+
+DESCRIPTION="UIOP is a portability layer spun off ASDF3"
+HOMEPAGE="http://common-lisp.net/project/asdf/"
+SRC_URI="http://common-lisp.net/project/asdf/archives/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~x86-solaris"
+IUSE=""
+
+RDEPEND="~dev-lisp/asdf-${PV}"