33 lines
1.6 KiB
Bash
33 lines
1.6 KiB
Bash
|
# Let built package know its version.
|
||
|
# Usually, when a package uses setuptools-scm as a build-time dependency, it
|
||
|
# expects to get the package version from SCM data. However, while doing a nix
|
||
|
# build, the source tree doesn't contain SCM data, so we should almost always
|
||
|
# get the version from the derivation attribute.
|
||
|
version-pretend-hook() {
|
||
|
if [ -z "$dontPretendSetuptoolsSCMVersion" -a -z "$SETUPTOOLS_SCM_PRETEND_VERSION" ]; then
|
||
|
echo Setting SETUPTOOLS_SCM_PRETEND_VERSION to $version
|
||
|
export SETUPTOOLS_SCM_PRETEND_VERSION="$version"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Include all tracked files.
|
||
|
# When a package uses setuptools-scm as a build-time dependency, it usually
|
||
|
# expects it to include all scm-tracked files in the built package, by default.
|
||
|
# This is the official setuptools-scm behavior, documented in
|
||
|
# https://setuptools-scm.readthedocs.io/en/latest/usage/#file-finders-hook-makes-most-of-manifestin-unnecessary
|
||
|
# and https://setuptools.pypa.io/en/latest/userguide/datafiles.html.
|
||
|
# However, while doing a nix build, the source tree doesn't contain SCM data,
|
||
|
# so it would include only `.py` files by default.
|
||
|
# We generate a MANIFEST.in automatically that includes all tracked files to
|
||
|
# emulate this behavior of setuptools-scm.
|
||
|
include-tracked-files-hook() {
|
||
|
if [ -z "$dontIncludeSetuptoolsSCMTrackedFiles" ]; then
|
||
|
echo Including all tracked files automatically
|
||
|
old_manifest="$(if [ -f MANIFEST.in ]; then cat MANIFEST.in; fi)"
|
||
|
echo 'global-include **' > MANIFEST.in
|
||
|
echo "$old_manifest" >> MANIFEST.in
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
preBuildHooks+=(version-pretend-hook include-tracked-files-hook)
|