aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setup.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..064398c
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,45 @@
+from pathlib import Path
+from setuptools import Command, setup
+from setuptools.command.sdist import sdist
+from setuptools.command.build import build
+
+
+class SubmoduleMissingException(Exception):
+ pass
+
+
+class CustomSubmoduleCheck(Command):
+ def initialize_options(self) -> None:
+ pass
+
+ def finalize_options(self) -> None:
+ pass
+
+ def run(self) -> None:
+ efd_path = Path("pyecsca/ec/efd")
+ if not list(efd_path.iterdir()):
+ raise SubmoduleMissingException(
+ "The EFD submodule of pyecsca is missing, did you initialize the git submodules?"
+ )
+ std_path = Path("pyecsca/ec/std")
+ if not list(std_path.iterdir()):
+ raise SubmoduleMissingException(
+ "The std-curves submodule of pyecsca is missing, did you initialize the git submodules?"
+ )
+
+
+class CustomSdist(sdist):
+ sub_commands = [("check_submodules", None)] + sdist.sub_commands
+
+
+class CustomBuild(build):
+ sub_commands = [("check_submodules", None)] + build.sub_commands
+
+
+setup(
+ cmdclass={
+ "sdist": CustomSdist,
+ "build": CustomBuild,
+ "check_submodules": CustomSubmoduleCheck,
+ }
+)