mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-06-09 23:03:47 +00:00
101 lines
2.8 KiB
Nix
101 lines
2.8 KiB
Nix
{
|
|
lib,
|
|
buildPythonPackage,
|
|
fetchFromGitHub,
|
|
srcOnly,
|
|
runCommand,
|
|
|
|
# build-system
|
|
cython,
|
|
setuptools,
|
|
|
|
# devendor
|
|
lua5_1,
|
|
lua5_2,
|
|
lua5_3,
|
|
lua5_4,
|
|
lua5_5,
|
|
luajit_2_0,
|
|
luajit_2_1,
|
|
}:
|
|
|
|
buildPythonPackage (finalAttrs: {
|
|
pname = "lupa";
|
|
version = "2.8";
|
|
pyproject = true;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "scoder";
|
|
repo = "lupa";
|
|
tag = "lupa-${finalAttrs.version}";
|
|
# we fetch the vendored lua sources for gracefull de-vendor degredation when a new lua is added
|
|
fetchSubmodules = true;
|
|
hash = "sha256-XLBUQ1TrzWWST9RJdMTnpsceldDNzidnL82bixLhSRA=";
|
|
};
|
|
|
|
patches = [
|
|
# The updated lua52 src has a radically changed makefile, matching lua53
|
|
./remove-lua52-special-case.patch
|
|
];
|
|
|
|
# devendor/update the luas to newer patched versions
|
|
postPatch = ''
|
|
(
|
|
set -x
|
|
${lib.optionalString lua5_1.meta.available ''
|
|
rm -rf third-party/lua51; cp -r ${srcOnly lua5_1} third-party/lua51
|
|
''}
|
|
${lib.optionalString lua5_2.meta.available ''
|
|
rm -rf third-party/lua52; cp -r ${srcOnly lua5_2}/src third-party/lua52
|
|
''}
|
|
${lib.optionalString lua5_3.meta.available ''
|
|
rm -rf third-party/lua53; cp -r ${srcOnly lua5_3}/src third-party/lua53
|
|
''}
|
|
${lib.optionalString lua5_4.meta.available ''
|
|
rm -rf third-party/lua54; cp -r ${srcOnly lua5_4}/src third-party/lua54
|
|
''}
|
|
${lib.optionalString lua5_5.meta.available ''
|
|
rm -rf third-party/lua55; cp -r ${srcOnly lua5_5}/src third-party/lua55
|
|
''}
|
|
${lib.optionalString luajit_2_0.meta.available ''
|
|
rm -rf third-party/luajit20; cp -r ${srcOnly luajit_2_0} third-party/luajit20
|
|
''}
|
|
${lib.optionalString luajit_2_1.meta.available ''
|
|
rm -rf third-party/luajit21; cp -r ${srcOnly luajit_2_1} third-party/luajit21
|
|
''}
|
|
chmod -R +w third-party/*
|
|
)
|
|
'';
|
|
|
|
build-system = [
|
|
cython
|
|
setuptools
|
|
];
|
|
|
|
pythonImportsCheck = [ "lupa" ];
|
|
|
|
# this helps us discover new lua versions when bumping, without blocking mass python-updates
|
|
passthru.tests.expected-third-party = runCommand "lupa-expected-third-party" { } ''
|
|
declare -a expected=( lua51 lua52 lua53 lua54 lua55 luajit20 luajit21 )
|
|
|
|
declare -a found_paths=( ${finalAttrs.src}/third-party/* )
|
|
declare -a found=("''${found_paths[@]##*/}")
|
|
if [[ "''${found[*]}" != "''${expected[*]}" ]]; then
|
|
echo >&2 "./third-party/ contains unexpected paths!"
|
|
echo >&2 "expected: ''${expected[*]}"
|
|
echo >&2 "found: ''${found[*]}"
|
|
exit 1
|
|
else
|
|
touch $out
|
|
fi
|
|
'';
|
|
|
|
meta = {
|
|
description = "Lua in Python";
|
|
homepage = "https://github.com/scoder/lupa";
|
|
changelog = "https://github.com/scoder/lupa/blob/${finalAttrs.src.tag}/CHANGES.rst";
|
|
license = lib.licenses.mit;
|
|
maintainers = with lib.maintainers; [ fab ];
|
|
};
|
|
})
|