From d6819a88db86d5c298fdf40cbaf86d328114c757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Bar=C4=87?= Date: Sun, 28 Nov 2021 22:37:10 +0100 Subject: [PATCH] dev-scheme/gerbil: add 0.16 and live MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maciej Barć --- dev-scheme/gerbil/Manifest | 1 + dev-scheme/gerbil/files/70gerbil-gentoo.el | 6 ++ dev-scheme/gerbil/files/99gerbil | 1 + dev-scheme/gerbil/gerbil-0.16.ebuild | 114 +++++++++++++++++++++ dev-scheme/gerbil/gerbil-9999.ebuild | 114 +++++++++++++++++++++ dev-scheme/gerbil/metadata.xml | 32 ++++++ 6 files changed, 268 insertions(+) create mode 100644 dev-scheme/gerbil/Manifest create mode 100644 dev-scheme/gerbil/files/70gerbil-gentoo.el create mode 100644 dev-scheme/gerbil/files/99gerbil create mode 100644 dev-scheme/gerbil/gerbil-0.16.ebuild create mode 100644 dev-scheme/gerbil/gerbil-9999.ebuild create mode 100644 dev-scheme/gerbil/metadata.xml diff --git a/dev-scheme/gerbil/Manifest b/dev-scheme/gerbil/Manifest new file mode 100644 index 0000000..d1147d6 --- /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/70gerbil-gentoo.el b/dev-scheme/gerbil/files/70gerbil-gentoo.el new file mode 100644 index 0000000..019fc53 --- /dev/null +++ b/dev-scheme/gerbil/files/70gerbil-gentoo.el @@ -0,0 +1,6 @@ +;;; gerbil site-lisp configuration + +(add-to-list 'load-path "@SITELISP@") + +(autoload 'gerbil-mode "gerbil-mode" nil t) +(add-to-list 'auto-mode-alist '("\\.ss\\'" . gerbil-mode)) diff --git a/dev-scheme/gerbil/files/99gerbil b/dev-scheme/gerbil/files/99gerbil new file mode 100644 index 0000000..05a894e --- /dev/null +++ b/dev-scheme/gerbil/files/99gerbil @@ -0,0 +1 @@ +GERBIL_HOME=/usr/share/gerbil diff --git a/dev-scheme/gerbil/gerbil-0.16.ebuild b/dev-scheme/gerbil/gerbil-0.16.ebuild new file mode 100644 index 0000000..9629756 --- /dev/null +++ b/dev-scheme/gerbil/gerbil-0.16.ebuild @@ -0,0 +1,114 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +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 +S="${S}/src" + +LICENSE="Apache-2.0 LGPL-2.1" +SLOT="0" +IUSE="emacs leveldb lmdb mysql +sqlite +xml yaml +zlib" + +BDEPEND="dev-scheme/gambit" +RDEPEND=" + dev-scheme/gambit + emacs? ( >=app-editors/emacs-23.1:* ) + 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 ) +" +DEPEND="${RDEPEND}" + +SITEFILE="70${PN}-gentoo.el" + +src_prepare() { + # Just to be safe, because './configure --help' says: + # "Set default GERBIL_HOME (environment variable still overrides)" + unset GERBIL_HOME + unset GERBIL_PATH + + # Verbose build process + export GAMBCOMP_VERBOSE="yes" + + 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() { + 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 + mv "${D}"/usr/share/${PN}/share/${PN}/TAGS "${D}"/usr/share/${PN}/TAGS || die + + # Compile the 'gerbil-mode.el' + if use emacs; then + elisp-compile "${D}/usr/share/emacs/site-lisp/gerbil"/*.el || + die "Failed to compile elisp files" + elisp-site-file-install "${FILESDIR}/${SITEFILE}" + fi + + # Create wrappers for gerbil executables in GERBIL_HOME (/usr/share/gerbil) + pushd "${D}"/usr/share/${PN}/bin >/dev/null || die + local gx_bin + for gx_bin in *; do + make_wrapper "${gx_bin}" "${EPREFIX}/usr/share/${PN}/bin/${gx_bin}" + done + popd >/dev/null || die + + # Without this the programs compiled with gxc will break! + doenvd "${FILESDIR}/99${PN}" +} + +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 0000000..9629756 --- /dev/null +++ b/dev-scheme/gerbil/gerbil-9999.ebuild @@ -0,0 +1,114 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +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 +S="${S}/src" + +LICENSE="Apache-2.0 LGPL-2.1" +SLOT="0" +IUSE="emacs leveldb lmdb mysql +sqlite +xml yaml +zlib" + +BDEPEND="dev-scheme/gambit" +RDEPEND=" + dev-scheme/gambit + emacs? ( >=app-editors/emacs-23.1:* ) + 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 ) +" +DEPEND="${RDEPEND}" + +SITEFILE="70${PN}-gentoo.el" + +src_prepare() { + # Just to be safe, because './configure --help' says: + # "Set default GERBIL_HOME (environment variable still overrides)" + unset GERBIL_HOME + unset GERBIL_PATH + + # Verbose build process + export GAMBCOMP_VERBOSE="yes" + + 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() { + 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 + mv "${D}"/usr/share/${PN}/share/${PN}/TAGS "${D}"/usr/share/${PN}/TAGS || die + + # Compile the 'gerbil-mode.el' + if use emacs; then + elisp-compile "${D}/usr/share/emacs/site-lisp/gerbil"/*.el || + die "Failed to compile elisp files" + elisp-site-file-install "${FILESDIR}/${SITEFILE}" + fi + + # Create wrappers for gerbil executables in GERBIL_HOME (/usr/share/gerbil) + pushd "${D}"/usr/share/${PN}/bin >/dev/null || die + local gx_bin + for gx_bin in *; do + make_wrapper "${gx_bin}" "${EPREFIX}/usr/share/${PN}/bin/${gx_bin}" + done + popd >/dev/null || die + + # Without this the programs compiled with gxc will break! + doenvd "${FILESDIR}/99${PN}" +} + +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 0000000..e738377 --- /dev/null +++ b/dev-scheme/gerbil/metadata.xml @@ -0,0 +1,32 @@ + + + + + + + Add support for using dev-libs/leveldb + + + Add support for using dev-db/lmdb + + + Add support for yaml file format + + + + 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. + + + https://github.com/vyzo/gerbil + vyzo/gerbil + +