diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -5,11 +5,12 @@ # See top-level LICENSE file for more information from distutils.cmd import Command -from distutils.command.build import build from io import open from os import environ, path, system from setuptools import find_packages, setup +from setuptools.command.build_py import build_py +from setuptools.command.sdist import sdist here = path.abspath(path.dirname(__file__)) @@ -89,22 +90,43 @@ class TSBuildExportCommand(TSCommand): description = "Builds swh_ql.so and swh_ql.wasm and exports them to static/" + def initialize_options(self): + self.build_lib = None + super().initialize_options() + + def finalize_options(self): + self.set_undefined_options("build", ("build_lib", "build_lib")) + super().finalize_options() + def run(self): self.run_command("ts_install") self.run_command("ts_build") - system("echo 'static files generated. copying them to static/ dir'") - system("mkdir static") - system("cp query_language/swh_ql.so static/swh_ql.so") - system("cp query_language/swh_ql.wasm static/swh_ql.wasm") + system("echo 'static files generated. copying them to package dir'") + system(f"cp query_language/swh_ql.so {self.build_lib}/swh/search/swh_ql.so") + system(f"cp query_language/swh_ql.wasm {self.build_lib}/swh/search/swh_ql.wasm") -class custom_build(build): +class custom_build(build_py): def run(self): + super().run() + if not self.dry_run: self.run_command("ts_build_export") - super().run() + +class custom_sdist(sdist): + def make_release_tree(self, base_dir, files): + super().make_release_tree(base_dir, files) + # TODO: build the .c file and .wasm but not .so, because it's architecture- + # dependent, and shouldn't be in a sdist (aka *source* distribution) + if not self.dry_run: + self.run_command("ts_install") + self.run_command("ts_build") + + system("echo 'static files generated. copying them to package dir'") + system(f"cp query_language/swh_ql.so {base_dir}/swh/search/swh_ql.so") + system(f"cp query_language/swh_ql.wasm {base_dir}/swh/search/swh_ql.wasm") setup( @@ -141,7 +163,8 @@ "Documentation": "https://docs.softwareheritage.org/devel/swh-search/", }, cmdclass={ - "build": custom_build, + "build_py": custom_build, + "sdist": custom_sdist, "ts_install": TSInstallCommand, "ts_generate": TSGenerateCommand, "ts_build_so": TSBuildSoCommand, @@ -149,5 +172,5 @@ "ts_build": TSBuildCommand, "ts_build_export": TSBuildExportCommand, }, - data_files=[("share/swh/search", ["static/swh_ql.so", "static/swh_ql.wasm"])], + zip_safe=False, )