GUILE-SINGLE.ECLASS
Section: eclass-manpages (5)Updated: Oct 2024
Index Return to Main Contents
NAME
guile-single.eclass - Utilities for packages that build against a single Guile.DESCRIPTION
This eclass facilitates packages building against a single slot of Guile, which is normally something that uses Guile for extending, like GNU Make, or for programs built in Guile, like Haunt.Inspired by prior work in the Gentoo Python ecosystem.
These packages should use guile_gen_cond_dep to generate a dependency string for their Guile package dependencies (i.e. other Guile single- and multi-implementation packages). They should also utilize GUILE_DEPS and GUILE_REQUIRED_USE to specify a dependency on their Guile versions.
They should also bump sources via guile_bump_sources during src_prepare, and unstrip ccache via guile_unstrip_ccache during src_install.
If the user of the eclass needs some USE flag on Guile itself, they should provide it via GUILE_REQ_USE.
This eclass provides a guile-single_pkg_setup that sets up environment variables needed for Guile and build systems using it. See the documentation for that function for more details.
SUPPORTED EAPIS
8TRANSITIVELY PROVIDED ECLASSES
guile-utilsEXAMPLE
A Guile program:
# Copyright 2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 GUILE_COMPAT=( 2-2 3-0 ) inherit guile-single DESCRIPTION="Haunt is a simple, functional, hackable static site generator" HOMEPAGE="https://dthompson.us/projects/haunt.html" SRC_URI="https://files.dthompson.us/releases/${PN}/${P}.tar.gz" LICENSE="GPL-3+" SLOT="0" KEYWORDS="~amd64" REQUIRED_USE="${GUILE_REQUIRED_USE}" RDEPEND=" ${GUILE_DEPS} $(guile_gen_cond_dep ' dev-scheme/guile-reader[${GUILE_MULTI_USEDEP}] dev-scheme/guile-commonmark[${GUILE_MULTI_USEDEP}] ') " DEPEND="${RDEPEND}"
A program utilizing Guile for extension (GNU make, irrelevant pieces elided):
GUILE_COMPAT=( 1-8 2-0 2-2 3-0 ) inherit flag-o-matic unpacker verify-sig guile-single # ... REQUIRED_USE="guile? ( ${GUILE_REQUIRED_USE} )" DEPEND=" guile? ( ${GUILE_DEPS} ) " src_prepare() { # ... if use guile; then guile-single_src_prepare fi } pkg_setup() { if use guile; then guile-single_pkg_setup fi } src_configure() { # ... local myeconfargs=( $(use_with guile) ) econf "${myeconfargs[@]}" } src_install() { # ... if use guile; then guile_unstrip_ccache fi }
FUNCTIONS
- guile_gen_cond_dep <dependency> [<pattern>...]
-
Takes a string that uses (quoted) ${GUILE_SINGLE_USEDEP} and
${GUILE_MULTI_USEDEP} markers as placeholders for the correct USE
dependency strings for each compatible slot.
If the pattern is provided, it is taken to be list of slots to generate the dependency string for, otherwise, ${GUILE_COMPAT[@]} is taken.
- guile-single_pkg_setup
-
Sets up the PKG_CONFIG_PATH with the appropriate GUILE_SINGLE_TARGET,
as well as setting up a guile-config and the GUILE, GUILD and
GUILESNARF environment variables. Also sets GUILE_EFFECTIVE_VERSION
to the same value as GUILE_SELECTED_TARGET, as build systems sometimes
check that variable.
For details on the latter three, see guile_export.
- guile-single_src_prepare
- Runs the default prepare stage, and then bumps Guile sources via guile_bump_sources.
- guile-single_src_install
- Runs the default install stage, and then marks ccache files not to be stripped using guile_unstrip_ccache.
ECLASS VARIABLES
- GUILE_COMPAT (REQUIRED) (SET BEFORE INHERIT)
-
List of acceptable versions of Guile. For instance, setting this
variable like below will allow the package to be built against either
Guile 2.2 or 3.0:
GUILE_COMPAT=( 2-2 3-0 )
Please keep in ascending order.
AUTHORS
Author: Arsen Arsenović <arsen@gentoo.org>MAINTAINERS
Gentoo Scheme project <scheme@gentoo.org>REPORTING BUGS
Please report bugs via https://bugs.gentoo.org/FILES
guile-single.eclassSEE ALSO
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/guile-single.eclass
Index
- NAME
- DESCRIPTION
- SUPPORTED EAPIS
- TRANSITIVELY PROVIDED ECLASSES
- EXAMPLE
- FUNCTIONS
- ECLASS VARIABLES
- AUTHORS
- MAINTAINERS
- REPORTING BUGS
- FILES
- SEE ALSO
This document was created by man2html, using the manual pages.
Time: 03:27:01 GMT, October 07, 2024