python: add pythonNamespacesHook
This commit is contained in:
parent
16516cec82
commit
a9c994ad0b
@ -89,6 +89,14 @@ in rec {
|
|||||||
};
|
};
|
||||||
} ./python-imports-check-hook.sh) {};
|
} ./python-imports-check-hook.sh) {};
|
||||||
|
|
||||||
|
pythonNamespacesHook = callPackage ({}:
|
||||||
|
makeSetupHook {
|
||||||
|
name = "python-namespaces-hook.sh";
|
||||||
|
substitutions = {
|
||||||
|
inherit pythonSitePackages;
|
||||||
|
};
|
||||||
|
} ./python-namespaces-hook.sh) {};
|
||||||
|
|
||||||
pythonRemoveBinBytecodeHook = callPackage ({ }:
|
pythonRemoveBinBytecodeHook = callPackage ({ }:
|
||||||
makeSetupHook {
|
makeSetupHook {
|
||||||
name = "python-remove-bin-bytecode-hook";
|
name = "python-remove-bin-bytecode-hook";
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
# Clean up __init__.py's found in namespace directories
|
||||||
|
echo "Sourcing python-namespaces-hook"
|
||||||
|
|
||||||
|
pythonNamespacesHook() {
|
||||||
|
echo "Executing pythonNamespacesHook"
|
||||||
|
|
||||||
|
for namespace in ${pythonNamespaces[@]}; do
|
||||||
|
echo "Enforcing PEP420 namespace: ${namespace}"
|
||||||
|
|
||||||
|
# split namespace into segments. "azure.mgmt" -> "azure mgmt"
|
||||||
|
IFS='.' read -ra pathSegments <<< $namespace
|
||||||
|
constructedPath=$out/@pythonSitePackages@
|
||||||
|
|
||||||
|
# Need to remove the __init__.py at each namespace level
|
||||||
|
# E.g `azure/__init__.py` and `azure/mgmt/__init__.py`
|
||||||
|
# The __pycache__ entry also needs to be removed
|
||||||
|
for pathSegment in ${pathSegments[@]}; do
|
||||||
|
constructedPath=${constructedPath}/${pathSegment}
|
||||||
|
pathToRemove=${constructedPath}/__init__.py
|
||||||
|
pycachePath=${constructedPath}/__pycache__/__init__*
|
||||||
|
|
||||||
|
if [ -f "$pathToRemove" ]; then
|
||||||
|
echo "Removing $pathToRemove"
|
||||||
|
rm "$pathToRemove"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$pycachePath" ]; then
|
||||||
|
echo "Removing $pycachePath"
|
||||||
|
rm "$pycachePath"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Finished executing pythonNamespacesHook"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "${dontUsePythonNamespacesHook-}" -a -n "${pythonNamespaces-}" ]; then
|
||||||
|
postFixupHooks+=(pythonNamespacesHook)
|
||||||
|
fi
|
||||||
|
|
@ -16,6 +16,7 @@
|
|||||||
, pipInstallHook
|
, pipInstallHook
|
||||||
, pythonCatchConflictsHook
|
, pythonCatchConflictsHook
|
||||||
, pythonImportsCheckHook
|
, pythonImportsCheckHook
|
||||||
|
, pythonNamespacesHook
|
||||||
, pythonRemoveBinBytecodeHook
|
, pythonRemoveBinBytecodeHook
|
||||||
, pythonRemoveTestsDirHook
|
, pythonRemoveTestsDirHook
|
||||||
, setuptoolsBuildHook
|
, setuptoolsBuildHook
|
||||||
@ -131,6 +132,9 @@ let
|
|||||||
] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
|
] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
|
||||||
# This is a test, however, it should be ran independent of the checkPhase and checkInputs
|
# This is a test, however, it should be ran independent of the checkPhase and checkInputs
|
||||||
pythonImportsCheckHook
|
pythonImportsCheckHook
|
||||||
|
] ++ lib.optionals (python.pythonAtLeast "3.3") [
|
||||||
|
# Optionally enforce PEP420 for python3
|
||||||
|
pythonNamespacesHook
|
||||||
] ++ nativeBuildInputs;
|
] ++ nativeBuildInputs;
|
||||||
|
|
||||||
buildInputs = buildInputs ++ pythonPath;
|
buildInputs = buildInputs ++ pythonPath;
|
||||||
|
@ -108,7 +108,22 @@ in {
|
|||||||
inherit buildSetupcfg;
|
inherit buildSetupcfg;
|
||||||
|
|
||||||
inherit (callPackage ../development/interpreters/python/hooks { })
|
inherit (callPackage ../development/interpreters/python/hooks { })
|
||||||
eggUnpackHook eggBuildHook eggInstallHook flitBuildHook pipBuildHook pipInstallHook pytestCheckHook pythonCatchConflictsHook pythonImportsCheckHook pythonRemoveBinBytecodeHook pythonRemoveTestsDirHook setuptoolsBuildHook setuptoolsCheckHook venvShellHook wheelUnpackHook;
|
eggUnpackHook
|
||||||
|
eggBuildHook
|
||||||
|
eggInstallHook
|
||||||
|
flitBuildHook
|
||||||
|
pipBuildHook
|
||||||
|
pipInstallHook
|
||||||
|
pytestCheckHook
|
||||||
|
pythonCatchConflictsHook
|
||||||
|
pythonImportsCheckHook
|
||||||
|
pythonNamespacesHook
|
||||||
|
pythonRemoveBinBytecodeHook
|
||||||
|
pythonRemoveTestsDirHook
|
||||||
|
setuptoolsBuildHook
|
||||||
|
setuptoolsCheckHook
|
||||||
|
venvShellHook
|
||||||
|
wheelUnpackHook;
|
||||||
|
|
||||||
# helpers
|
# helpers
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user