From 0902b51b695c3f62280217ac58c6ad5862af4ad3 Mon Sep 17 00:00:00 2001 From: Chae-Yeun Park Date: Fri, 4 Feb 2022 14:23:01 -0500 Subject: [PATCH 1/4] Fix include cpp src in a wheel --- .github/workflows/wheel_linux_x86_64.yml | 2 +- setup.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wheel_linux_x86_64.yml b/.github/workflows/wheel_linux_x86_64.yml index 4497395cd8..b34f56d5df 100644 --- a/.github/workflows/wheel_linux_x86_64.yml +++ b/.github/workflows/wheel_linux_x86_64.yml @@ -60,7 +60,7 @@ jobs: regex: '.*[0-9]+.[0-9]+.[0-9]+[-]?rc[0-9]+' - uses: actions/upload-artifact@v2 - if: ${{ github.event_name == 'release' || github.ref == 'refs/heads/master' || steps.rc_build.outputs.match != ''}} + #if: ${{ github.event_name == 'release' || github.ref == 'refs/heads/master' || steps.rc_build.outputs.match != ''}} with: name: ${{ runner.os }}-wheels.zip path: ./wheelhouse/*.whl diff --git a/setup.py b/setup.py index c52840d757..f330bc0114 100644 --- a/setup.py +++ b/setup.py @@ -118,7 +118,8 @@ def build_extension(self, ext: CMakeExtension): "url": "https://github.com/XanaduAI/pennylane-lightning", "license": "Apache License 2.0", "packages": find_packages(where="."), - "package_data": {"pennylane_lightning": ["src/*"]}, + "package_data": {"pennylane_lightning": ["src/**/*"]}, + "include_package_data": True, "entry_points": { "pennylane.plugins": [ "lightning.qubit = pennylane_lightning:LightningQubit", From 656a0484db8f5301b241d66eb40433d83770458d Mon Sep 17 00:00:00 2001 From: Chae-Yeun Park Date: Fri, 4 Feb 2022 14:37:48 -0500 Subject: [PATCH 2/4] Format setup.py; Also include the root src directory files --- setup.py | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/setup.py b/setup.py index f330bc0114..1318f56a7a 100644 --- a/setup.py +++ b/setup.py @@ -23,9 +23,10 @@ from distutils.util import get_platform + class CMakeExtension(Extension): - def __init__(self, name, sourcedir = ""): - Extension.__init__(self, name, sources = []) + def __init__(self, name, sourcedir=""): + Extension.__init__(self, name, sources=[]) self.sourcedir = Path(sourcedir).absolute() @@ -34,9 +35,7 @@ class CMakeBuild(build_ext): This class is built upon https://github.com/diegoferigo/cmake-build-extension/blob/master/src/cmake_build_extension/build_extension.py and https://github.com/pybind/cmake_example/blob/master/setup.py """ - user_options = build_ext.user_options + [ - ("define=", "D", "Define variables for CMake") - ] + user_options = build_ext.user_options + [("define=", "D", "Define variables for CMake")] def initialize_options(self): super().initialize_options() @@ -53,7 +52,7 @@ def build_extension(self, ext: CMakeExtension): extdir = str(Path(self.get_ext_fullpath(ext.name)).parent.absolute()) debug = int(os.environ.get("DEBUG", 0)) if self.debug is None else self.debug - ninja_path = str(shutil.which('ninja')) + ninja_path = str(shutil.which("ninja")) # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON configure_args = [ @@ -61,13 +60,13 @@ def build_extension(self, ext: CMakeExtension): f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}", f"-DPYTHON_EXECUTABLE={sys.executable}", f"-DCMAKE_MAKE_PROGRAM={ninja_path}", - "-DENABLE_WARNINGS=OFF", # Ignore warnings + "-DENABLE_WARNINGS=OFF", # Ignore warnings ] if debug: configure_args += ["-DCMAKE_BUILD_TYPE=Debug"] configure_args += self.cmake_defines - + build_args = [] # Add more platform dependent options @@ -79,33 +78,24 @@ def build_extension(self, ext: CMakeExtension): configure_args += ["-DENABLE_OPENMP=OFF"] elif platform.system() == "Linux": if platform.machine() == "x86_64": - configure_args += [ - "-DENABLE_AVX=ON" - ] # Enable AVX if x64 on Linux + configure_args += ["-DENABLE_AVX=ON"] # Enable AVX if x64 on Linux elif platform.system() == "Windows": - configure_args += [ - "-DENABLE_OPENMP=OFF", - "-DENABLE_BLAS=OFF" - ] + configure_args += ["-DENABLE_OPENMP=OFF", "-DENABLE_BLAS=OFF"] else: raise RuntimeError(f"Unsupported '{platform.system()}' platform") if not Path(self.build_temp).exists(): os.makedirs(self.build_temp) - - subprocess.check_call( - ["cmake", str(ext.sourcedir)] + configure_args, cwd = self.build_temp - ) - subprocess.check_call( - ["cmake", "--build", "."] + build_args, cwd = self.build_temp - ) + + subprocess.check_call(["cmake", str(ext.sourcedir)] + configure_args, cwd=self.build_temp) + subprocess.check_call(["cmake", "--build", "."] + build_args, cwd=self.build_temp) with open("pennylane_lightning/_version.py") as f: version = f.readlines()[-1].split()[-1].strip("\"'") requirements = [ - "ninja", + "ninja", "numpy", "pennylane>=0.19", ] @@ -118,7 +108,7 @@ def build_extension(self, ext: CMakeExtension): "url": "https://github.com/XanaduAI/pennylane-lightning", "license": "Apache License 2.0", "packages": find_packages(where="."), - "package_data": {"pennylane_lightning": ["src/**/*"]}, + "package_data": {"pennylane_lightning": ["src/*", "src/**/*"]}, "include_package_data": True, "entry_points": { "pennylane.plugins": [ @@ -130,7 +120,9 @@ def build_extension(self, ext: CMakeExtension): "long_description_content_type": "text/x-rst", "provides": ["pennylane_lightning"], "install_requires": requirements, - "ext_modules": [CMakeExtension("lightning_qubit_ops")] if not os.environ.get("SKIP_COMPILATION", False) else [], + "ext_modules": [CMakeExtension("lightning_qubit_ops")] + if not os.environ.get("SKIP_COMPILATION", False) + else [], "cmdclass": {"build_ext": CMakeBuild}, "ext_package": "pennylane_lightning", } From a41b91f281b5573e630b22b4b970d0e77510e4c5 Mon Sep 17 00:00:00 2001 From: Chae-Yeun Park Date: Fri, 4 Feb 2022 15:47:48 -0500 Subject: [PATCH 3/4] Revert workflow --- .github/workflows/wheel_linux_x86_64.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheel_linux_x86_64.yml b/.github/workflows/wheel_linux_x86_64.yml index b34f56d5df..4497395cd8 100644 --- a/.github/workflows/wheel_linux_x86_64.yml +++ b/.github/workflows/wheel_linux_x86_64.yml @@ -60,7 +60,7 @@ jobs: regex: '.*[0-9]+.[0-9]+.[0-9]+[-]?rc[0-9]+' - uses: actions/upload-artifact@v2 - #if: ${{ github.event_name == 'release' || github.ref == 'refs/heads/master' || steps.rc_build.outputs.match != ''}} + if: ${{ github.event_name == 'release' || github.ref == 'refs/heads/master' || steps.rc_build.outputs.match != ''}} with: name: ${{ runner.os }}-wheels.zip path: ./wheelhouse/*.whl From 77d8f168a62bce4e3ad4dd2c353c025b1ce36c2b Mon Sep 17 00:00:00 2001 From: Chae-Yeun Park Date: Fri, 4 Feb 2022 16:07:52 -0500 Subject: [PATCH 4/4] Trigger workflows