commit: a6f6f061395b002f7612771fb0cc50e0280e91a8 Author: Maciej Barć <xgqt <AT> protonmail <DOT> com> AuthorDate: Mon Feb 1 01:57:55 2021 +0000 Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net> 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>x...@protonmail.com</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>