pythonPackages.botan3: init at 3.9.0

This adds a python package definition for botan 3.9.0.
The pyproject.toml can be removed later, as upstream support
is pending, see: https://github.com/randombit/botan/pull/5040.

Co-authored-by: Acid Bong <acidbong@tilde.club>
Signed-off-by: Markus Theil <theil.markus@gmail.com>

Changed files
+109
pkgs
development
python-modules
top-level
+72
pkgs/development/python-modules/botan3/default.nix
···
+
{
+
lib,
+
stdenv,
+
buildPythonPackage,
+
+
# dependencies
+
botan3,
+
+
# build dependencies
+
setuptools,
+
setuptools-scm,
+
}:
+
+
buildPythonPackage rec {
+
pname = "botan3";
+
+
inherit (botan3) src version;
+
+
pyproject = true;
+
+
build-system = [
+
setuptools
+
setuptools-scm
+
];
+
+
# not necessary for build, but makes it easier to discover for
+
# SBOM tooling
+
buildInputs = [ botan3 ];
+
+
# not necessary for build, but makes it easier to discover for
+
# SBOM tooling
+
nativeBuildInputs = [
+
setuptools
+
setuptools-scm
+
];
+
+
sourceRoot = "Botan-${version}/src/python";
+
+
postPatch = ''
+
# remove again, when https://github.com/randombit/botan/pull/5040 got
+
# merged
+
cp ${./pyproject.toml} pyproject.toml
+
''
+
+ (
+
if stdenv.hostPlatform.isDarwin then
+
''
+
botanLibPath=$(find ${lib.getLib botan3}/lib -name 'libbotan-3.dylib' -print -quit)
+
substituteInPlace botan3.py --replace-fail 'libbotan-3.dylib' "$botanLibPath"
+
''
+
else if stdenv.hostPlatform.isMinGW then
+
''
+
botanLibPath=$(find ${lib.getLib botan3}/lib -name 'libbotan-3.dll' -print -quit)
+
substituteInPlace botan3.py --replace-fail 'libbotan-3.dll' "$botanLibPath"
+
''
+
# Linux/other Unix-like system
+
else
+
''
+
botanLibPath=$(find ${lib.getLib botan3}/lib -name 'libbotan-3.so' -print -quit)
+
substituteInPlace botan3.py --replace-fail 'libbotan-3.so' "$botanLibPath"
+
''
+
);
+
+
pythonImportsCheck = [ "botan3" ];
+
+
meta = {
+
description = "Python Bindings for botan3 cryptography library";
+
homepage = "https://github.com/randombit/botan";
+
changelog = "https://github.com/randombit/botan/blob/${version}/news.rst";
+
license = lib.licenses.bsd2;
+
maintainers = with lib.maintainers; [ thillux ];
+
};
+
}
+35
pkgs/development/python-modules/botan3/pyproject.toml
···
+
[project]
+
name = "botan3"
+
description = "Python bindings for Botan C++ cryptography library"
+
license = "BSD-2-Clause"
+
dynamic = [ "version" ]
+
authors = [
+
{name = "Jack Lloyd", email = "jack@randombit.net"},
+
{name = "Botan contributors" }
+
]
+
maintainers = [ {name = "Jack Lloyd", email = "jack@randombit.net"} ]
+
classifiers = [
+
"Development Status :: 5 - Production/Stable",
+
"Topic :: Security :: Cryptography",
+
"Operating System :: OS Independent",
+
"Programming Language :: Python",
+
"Programming Language :: Python :: Implementation :: CPython",
+
"Programming Language :: Python :: Implementation :: PyPy"
+
]
+
# adapt from time to time with the latest still supported version
+
requires-python = ">=3.9"
+
+
[project.urls]
+
Homepage = "https://botan.randombit.net/"
+
Issues = "https://github.com/randombit/botan/issues"
+
+
[build-system]
+
requires = [ "setuptools>=61", "setuptools-scm>=8" ]
+
build-backend = "setuptools.build_meta"
+
+
[tool.setuptools]
+
py-modules = ["botan3"]
+
+
# read version information from git
+
[tool.setuptools_scm]
+
root = "../.."
+2
pkgs/top-level/python-packages.nix
···
bot-safe-agents = callPackage ../development/python-modules/bot-safe-agents { };
+
botan3 = callPackage ../development/python-modules/botan3 { inherit (pkgs) botan3; };
+
boto3 = callPackage ../development/python-modules/boto3 { };
boto3-stubs = callPackage ../development/python-modules/boto3-stubs { };