]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
added autogenerated setup.py
authorVasek Sraier <git@vakabus.cz>
Wed, 27 Oct 2021 09:57:06 +0000 (11:57 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
manager/pyproject.toml
manager/scripts/codecheck
manager/scripts/create_setup.py [new file with mode: 0644]
manager/scripts/run
manager/setup.py [new file with mode: 0644]

index 8d089c133cc1f609c7fd1b661f261f87864e4030..71c9a51a98a6108708fb3d23c9495a225433b735 100644 (file)
@@ -53,6 +53,7 @@ clean = """
          dist
          .tox
 """
+gen-setuppy = { shell = "python scripts/create_setup.py > setup.py", help = "Generate setup.py file for backwards compatibility" }
 tox = { cmd = "tox", help = "Run tests in tox" }
 integration = {cmd = "python integration/runner.py", help = "Run integration tests" }
 configure-vscode = {cmd = "scripts/configure-vscode", help = "Create VSCode configuration for debugging, virtual envs etc" }
index 31a7ebd41b838497b4b2566b613aff008dd64c8b..0be9f93f0eb1b6f982fec55ce341efc0538712f9 100755 (executable)
@@ -40,10 +40,21 @@ pyright knot_resolver_manager
 check_rv $?
 echo
 
+
+# check that setup.py is not behind pyproject.toml
+echo -e "${yellow}Checking setup.py${reset}"
+python scripts/create_setup.py | diff - setup.py
+check_rv $?
+echo
+
 # fancy messages at the end :)
 if test "$aggregate_rv" -eq "0"; then
        echo -e "${green}Everything looks great!${reset} 🥳🎉🥰"
 else
+       echo -e "${red}Failure.${reset}"
+       echo -e "${red}These commands might help you:${reset}"
+       echo -e "${red}\tpoe format${reset}"
+       echo -e "${red}\tpoe gen-setuppy${reset}"
        echo -e "${red}That's not great. Could you please fix that?${reset} 😲😟"
 fi
 
diff --git a/manager/scripts/create_setup.py b/manager/scripts/create_setup.py
new file mode 100644 (file)
index 0000000..bf1366c
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Original source:
+# https://github.com/sdss/flicamera/blob/main/create_setup.py
+# We modified the script so that it outputs the setup.py to stdout
+#
+# @Author: José Sánchez-Gallego (gallegoj@uw.edu)
+# @Date: 2019-12-18
+# @Filename: create_setup.py
+# @License: BSD 3-clause (http://www.opensource.org/licenses/BSD-3-Clause)
+
+# This is a temporary solution for the fact that pip install . fails with
+# poetry when there is no setup.py and an extension needs to be compiled.
+# See https://github.com/python-poetry/poetry/issues/1516. Running this
+# script creates a setup.py filled out with information generated by
+# poetry when parsing the pyproject.toml.
+
+import os
+import sys
+from distutils.version import StrictVersion
+
+
+# If there is a global installation of poetry, prefer that.
+lib = os.path.expanduser("~/.poetry/lib")
+vendors = os.path.join(lib, "poetry", "_vendor")
+current_vendors = os.path.join(
+    vendors, "py{}".format(".".join(str(v) for v in sys.version_info[:2]))
+)
+
+sys.path.insert(0, lib)
+sys.path.insert(0, current_vendors)
+
+try:
+    try:
+        from poetry.core.factory import Factory
+        from poetry.core.masonry.builders.sdist import SdistBuilder
+    except (ImportError, ModuleNotFoundError):
+        from poetry.masonry.builders.sdist import SdistBuilder
+        from poetry.factory import Factory
+    from poetry.__version__ import __version__
+except (ImportError, ModuleNotFoundError) as ee:
+    raise ImportError(
+        f"install poetry by doing pip install poetry to use this script: {ee}"
+    )
+
+
+# Generate a Poetry object that knows about the metadata in pyproject.toml
+factory = Factory()
+poetry = factory.create_poetry(os.path.dirname(__file__))
+
+# Use the SdistBuilder to genrate a blob for setup.py
+if StrictVersion(__version__) >= StrictVersion("1.1.0b1"):
+    sdist_builder = SdistBuilder(poetry, None)
+else:
+    sdist_builder = SdistBuilder(poetry, None, None)
+
+setuppy_blob = sdist_builder.build_setup()
+
+sys.stdout.buffer.write(setuppy_blob)
+sys.stdout.buffer.write(b"\n# This setup.py was autogenerated using poetry.\n")
index fdd5839eb8eaffc951e3145eadb38e77d9fd665c..39438df1563397b528a775fc5fff4dc9e050cc52 100755 (executable)
@@ -7,4 +7,4 @@ source $src_dir/_env.sh
 echo Knot Manager API is accessible on http://localhost:5000
 echo -------------------------------------------------------
 
-poetry run python -m knot_resolver_manager $@
\ No newline at end of file
+poetry run python -m knot_resolver_manager -c etc/knot-resolver/config.yml $@
diff --git a/manager/setup.py b/manager/setup.py
new file mode 100644 (file)
index 0000000..7ca64d8
--- /dev/null
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+from setuptools import setup
+
+packages = \
+['knot_resolver_manager',
+ 'knot_resolver_manager.client',
+ 'knot_resolver_manager.compat',
+ 'knot_resolver_manager.datamodel',
+ 'knot_resolver_manager.kresd_controller',
+ 'knot_resolver_manager.kresd_controller.supervisord',
+ 'knot_resolver_manager.kresd_controller.systemd',
+ 'knot_resolver_manager.utils']
+
+package_data = \
+{'': ['*']}
+
+install_requires = \
+['Jinja2>=2.11.3,<3.0.0',
+ 'PyGObject>=3.38.0,<4.0.0',
+ 'PyYAML>=5.4.1,<6.0.0',
+ 'aiohttp>=3.6.12,<4.0.0',
+ 'click>=7.1.2,<8.0.0',
+ 'pydbus>=0.6.0,<0.7.0',
+ 'requests>=2.25.1,<3.0.0']
+
+setup_kwargs = {
+    'name': 'knot-resolver-manager',
+    'version': '0.1.0',
+    'description': 'A central management tool for multiple instances of Knot Resolver',
+    'long_description': None,
+    'author': 'Vašek Šraier',
+    'author_email': 'git@vakabus.cz',
+    'maintainer': None,
+    'maintainer_email': None,
+    'url': None,
+    'packages': packages,
+    'package_data': package_data,
+    'install_requires': install_requires,
+    'python_requires': '>=3.6.8,<4.0.0',
+}
+
+
+setup(**setup_kwargs)
+
+# This setup.py was autogenerated using poetry.