commit: a6f6f061395b002f7612771fb0cc50e0280e91a8
Author: Maciej Barć <xgqt <AT> protonmail <DOT> com>
AuthorDate: Mon Feb 1 01:57:55 2021 +0000
Commit: Maciej Barć <xgqt <AT> protonmail <DOT> com>
CommitDate: Mon Feb 1 03:41:52 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a6f6f061
dev-scheme/gerbil: new pkg; add version 0.16 and 9999
Package-Manager: Portage-3.0.13, Repoman-3.0.2
Signed-off-by: Maciej Barć <xgqt <AT> protonmail.com>
dev-scheme/gerbil/Manifest | 1 +
dev-scheme/gerbil/files/gerbil_home.sh | 6 ++
dev-scheme/gerbil/gerbil-0.16.ebuild | 112 +++++++++++++++++++++++++++++++
dev-scheme/gerbil/gerbil-9999.ebuild | 119 +++++++++++++++++++++++++++++++++
dev-scheme/gerbil/metadata.xml | 34 ++++++++++
5 files changed, 272 insertions(+)
diff --git a/dev-scheme/gerbil/Manifest b/dev-scheme/gerbil/Manifest
new file mode 100644
index 00000000..d1147d68
--- /dev/null
+++ b/dev-scheme/gerbil/Manifest
@@ -0,0 +1 @@
+DIST gerbil-0.16.tar.gz 1715765 BLAKE2B
74cd501b19c8f124f9478c73080e92c2ba0bf92e8cb9faa4cba492b2def8a61633897b67def4200e53962ccf22287f58cf7fdd33604104acc80bde12dd58b07c
SHA512
46782b4b71a3b437501b825f2f164e53b285d3a4cdba8f04485edaaa589d8500535c06a47a1464fc537ab7546413dde37c8d6a16a5e076a99ccf255905ed105d
diff --git a/dev-scheme/gerbil/files/gerbil_home.sh
b/dev-scheme/gerbil/files/gerbil_home.sh
new file mode 100644
index 00000000..8e695985
--- /dev/null
+++ b/dev-scheme/gerbil/files/gerbil_home.sh
@@ -0,0 +1,6 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+
+GERBIL_HOME="${EPREFIX}/usr/share/gerbil"
+export GERBIL_HOME
diff --git a/dev-scheme/gerbil/gerbil-0.16.ebuild
b/dev-scheme/gerbil/gerbil-0.16.ebuild
new file mode 100644
index 00000000..b5ddf8a9
--- /dev/null
+++ b/dev-scheme/gerbil/gerbil-0.16.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit elisp-common toolchain-funcs wrapper
+
+DESCRIPTION="Dialect of Scheme designed for Systems Programming"
+HOMEPAGE="
+ https://cons.io/
+ https://github.com/vyzo/gerbil
+"
+
+if [[ "${PV}" == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/vyzo/${PN}.git"
+else
+ SRC_URI="https://github.com/vyzo/${PN}/archive/v${PV}.tar.gz ->
${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="Apache-2.0 LGPL-2.1"
+SLOT="0"
+IUSE="emacs leveldb lmdb mysql +sqlite +xml yaml +zlib"
+
+BDEPEND="
+ emacs? ( >=app-editors/emacs-23.1:* )
+"
+DEPEND="
+ dev-scheme/gambit
+ leveldb? ( dev-libs/leveldb )
+ lmdb? ( dev-db/lmdb )
+ mysql? ( dev-db/mariadb:* )
+ sqlite? ( dev-db/sqlite )
+ xml? ( dev-libs/libxml2 )
+ yaml? ( dev-libs/libyaml )
+ zlib? ( sys-libs/zlib )
+"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${P}/src"
+
+src_configure() {
+ # Just to be safe, because './configure --help' says:
+ # "Set default GERBIL_HOME (environment variable still overrides)"
+ unset GERBIL_HOME
+
+ local myconf=(
+ $(use_enable leveldb)
+ $(use_enable lmdb)
+ $(use_enable mysql)
+ $(use_enable xml libxml)
+ $(use_enable yaml libyaml)
+ $(usex sqlite '' '--disable-sqlite')
+ $(usex zlib '' '--disable-zlib')
+ --prefix="${D}/usr/share/${PN}"
+ )
+ # This is not a standard 'configure' script!
+ gsi ./configure "${myconf[@]}" \
+ || die "Failed to configure using the 'configure' script"
+}
+
+src_compile() {
+ # The 'build.sh' script uses environment variables that are exported
+ # by portage, ie.: CFLAGS, LDFLAGS, ...
+ sh ./build.sh \
+ || die "Failed to compile using the 'build.sh' script"
+}
+
+src_install() {
+ mkdir -p "${D}/usr/share/${PN}" \
+ || die "Failed to make ${D}/usr/share/${PN} directory"
+ gsi ./install \
+ || die "Failed to install using the 'install' script"
+
+ sed -i "s|${D}|${EPREFIX}|g" "${D}/usr/share/${PN}/bin/gxc" \
+ || die "Failed to fix the 'gxc' executable script"
+
+ mv "${D}/usr/share/${PN}/share/emacs" "${D}/usr/share/emacs" \
+ || die "Failed to fix '/usr/share/emacs' install path"
+ mv "${D}/usr/share/${PN}/share/${PN}/TAGS" "${D}/usr/share/${PN}/TAGS" \
+ || die "Failed to fix '/usr/share/gerbil/TAGS' install path"
+
+ # Compile the 'gerbil-mode.el'
+ # FIXME: Doesn't autoload
+ if use emacs; then
+ pushd "${D}/usr/share/emacs/site-lisp/gerbil" || die
+ elisp-compile *.el || die
+ popd || die
+ fi
+
+ # Create wrappers for gerbil executables in GERBIL_HOME
(/usr/share/gerbil)
+ pushd "${D}/usr/share/${PN}/bin" || die
+ local gx_bin
+ for gx_bin in *; do
+ make_wrapper "${gx_bin}" "env
GERBIL_HOME=\"${EPREFIX}/usr/share/${PN}\"
${EPREFIX}/usr/share/${PN}/bin/${gx_bin}"
+ done
+ popd || die
+
+ # Without this the programs compiled with gxc will break!
+ # FIXME: Patch gerbil to compile with te correct 'GERBIL_HOME'?
+ insinto "/etc/profile.d"
+ doins "${FILESDIR}/gerbil_home.sh"
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-scheme/gerbil/gerbil-9999.ebuild
b/dev-scheme/gerbil/gerbil-9999.ebuild
new file mode 100644
index 00000000..831c6b68
--- /dev/null
+++ b/dev-scheme/gerbil/gerbil-9999.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit elisp-common toolchain-funcs wrapper
+
+DESCRIPTION="Dialect of Scheme designed for Systems Programming"
+HOMEPAGE="
+ https://cons.io/
+ https://github.com/vyzo/gerbil
+"
+
+if [[ "${PV}" == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/vyzo/${PN}.git"
+else
+ SRC_URI="https://github.com/vyzo/${PN}/archive/v${PV}.tar.gz ->
${P}.tar.gz"
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="Apache-2.0 LGPL-2.1"
+SLOT="0"
+IUSE="emacs leveldb lmdb mysql +sqlite +xml yaml +zlib"
+
+BDEPEND="
+ emacs? ( >=app-editors/emacs-23.1:* )
+"
+DEPEND="
+ dev-scheme/gambit
+ leveldb? ( dev-libs/leveldb )
+ lmdb? ( dev-db/lmdb )
+ mysql? ( dev-db/mariadb:* )
+ sqlite? ( dev-db/sqlite )
+ xml? ( dev-libs/libxml2 )
+ yaml? ( dev-libs/libyaml )
+ zlib? ( sys-libs/zlib )
+"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${P}/src"
+
+src_prepare() {
+ default
+
+ sed -i "s|gcc|$(tc-getCC)|g" ./build.sh || die "Failed to fix CC
setting"
+ sed -i "s|-O2|${CFLAGS}|g" ./build.sh || die "Failed to fix CFLAGS
setting"
+}
+
+src_configure() {
+ # Just to be safe, because './configure --help' says:
+ # "Set default GERBIL_HOME (environment variable still overrides)"
+ unset GERBIL_HOME
+
+ local myconf=(
+ $(use_enable leveldb)
+ $(use_enable lmdb)
+ $(use_enable mysql)
+ $(use_enable xml libxml)
+ $(use_enable yaml libyaml)
+ $(usex sqlite '' '--disable-sqlite')
+ $(usex zlib '' '--disable-zlib')
+ --prefix="${D}/usr/share/${PN}"
+ )
+ # This is not a standard 'configure' script!
+ gsi ./configure "${myconf[@]}" \
+ || die "Failed to configure using the 'configure' script"
+}
+
+src_compile() {
+ # The 'build.sh' script uses environment variables that are exported
+ # by portage, ie.: CFLAGS, LDFLAGS, ...
+ sh ./build.sh \
+ || die "Failed to compile using the 'build.sh' script"
+}
+
+src_install() {
+ mkdir -p "${D}/usr/share/${PN}" \
+ || die "Failed to make ${D}/usr/share/${PN} directory"
+ gsi ./install \
+ || die "Failed to install using the 'install' script"
+
+ sed -i "s|${D}|${EPREFIX}|g" "${D}/usr/share/${PN}/bin/gxc" \
+ || die "Failed to fix the 'gxc' executable script"
+
+ mv "${D}/usr/share/${PN}/share/emacs" "${D}/usr/share/emacs" \
+ || die "Failed to fix '/usr/share/emacs' install path"
+ mv "${D}/usr/share/${PN}/share/${PN}/TAGS" "${D}/usr/share/${PN}/TAGS" \
+ || die "Failed to fix '/usr/share/gerbil/TAGS' install path"
+
+ # Compile the 'gerbil-mode.el'
+ # FIXME: Doesn't autoload
+ if use emacs; then
+ pushd "${D}/usr/share/emacs/site-lisp/gerbil" || die
+ elisp-compile *.el || die
+ popd || die
+ fi
+
+ # Create wrappers for gerbil executables in GERBIL_HOME
(/usr/share/gerbil)
+ pushd "${D}/usr/share/${PN}/bin" || die
+ local gx_bin
+ for gx_bin in *; do
+ make_wrapper "${gx_bin}" "env
GERBIL_HOME=\"${EPREFIX}/usr/share/${PN}\"
${EPREFIX}/usr/share/${PN}/bin/${gx_bin}"
+ done
+ popd || die
+
+ # Without this the programs compiled with gxc will break!
+ # FIXME: Patch gerbil to compile with te correct 'GERBIL_HOME'?
+ insinto "/etc/profile.d"
+ doins "${FILESDIR}/gerbil_home.sh"
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-scheme/gerbil/metadata.xml b/dev-scheme/gerbil/metadata.xml
new file mode 100644
index 00000000..6f63dff0
--- /dev/null
+++ b/dev-scheme/gerbil/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="person">
+ <email>[email protected]</email>
+ <name>Maciej Barć</name>
+ </maintainer>
+ <use>
+ <flag name="leveldb">
+ Add support for using dev-libs/leveldb
+ </flag>
+ <flag name="lmdb">
+ Add support for using dev-db/lmdb
+ </flag>
+ <flag name="yaml">
+ Add support for yaml file format
+ </flag>
+ </use>
+ <longdescription lang="en">
+ Gerbil is an opinionated dialect of Scheme designed
+ for Systems Programming, with a state of the art macro
+ and module system on top of the Gambit runtime.
+ The macro system is based on quote-syntax, and provides
+ the full meta-syntactic tower with a native implementation
+ of syntax-case. It also provides a full-blown module system,
+ similar to PLT Scheme’s (Racket) modules. The main difference
+ from Racket is that Gerbil modules are single instantiation,
+ supporting high performance ahead of time compilation
+ and compiled macros.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">vyzo/gerbil</remote-id>
+ </upstream>
+</pkgmetadata>