mirror of https://github.com/Qiskit/qiskit.git
150 lines
5.0 KiB
Python
150 lines
5.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright 2017 IBM RESEARCH. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# =============================================================================
|
|
|
|
import sys
|
|
import os
|
|
import platform
|
|
from distutils.command.build import build
|
|
from multiprocessing import cpu_count
|
|
from subprocess import call
|
|
|
|
from setuptools import setup
|
|
from setuptools.dist import Distribution
|
|
|
|
|
|
requirements = [
|
|
"IBMQuantumExperience>=1.8.29",
|
|
"matplotlib>=2.1,<2.2",
|
|
"networkx>=2.0,<2.1",
|
|
"numpy>=1.13,<1.15",
|
|
"ply==3.10",
|
|
"scipy>=0.19,<1.1",
|
|
"sympy>=1.0",
|
|
"pillow>=4.2.1"
|
|
]
|
|
|
|
|
|
packages = ["qiskit",
|
|
"qiskit.backends",
|
|
"qiskit.dagcircuit",
|
|
"qiskit.extensions",
|
|
"qiskit.extensions.standard",
|
|
"qiskit.extensions.qiskit_simulator",
|
|
"qiskit.extensions.quantum_initializer",
|
|
"qiskit.mapper",
|
|
"qiskit.qasm",
|
|
"qiskit.qasm._node",
|
|
"qiskit.unroll",
|
|
"qiskit.tools",
|
|
"qiskit.tools.apps",
|
|
"qiskit.tools.qcvv",
|
|
"qiskit.tools.qi"]
|
|
|
|
|
|
# C++ components compilation
|
|
class QiskitSimulatorBuild(build):
|
|
def run(self):
|
|
super().run()
|
|
# Store the current working directory, as invoking cmake involves
|
|
# an out of source build and might interfere with the rest of the steps.
|
|
current_directory = os.getcwd()
|
|
|
|
try:
|
|
supported_platforms = ['Linux', 'Darwin', 'Windows']
|
|
current_platform = platform.system()
|
|
if current_platform not in supported_platforms:
|
|
# TODO: stdout is silenced by pip if the full setup.py invocation is
|
|
# successful, unless using '-v' - hence the warnings are not printed.
|
|
print('WARNING: QISKit cpp simulator is meant to be built with these '
|
|
'platforms: {}. We will support other platforms soon!'
|
|
.format(supported_platforms))
|
|
return
|
|
|
|
cmd_cmake = ['cmake', '-vvv']
|
|
if 'USER_LIB_PATH' in os.environ:
|
|
cmd_cmake.append('-DUSER_LIB_PATH={}'.format(os.environ['USER_LIB_PATH']))
|
|
if current_platform == 'Windows':
|
|
# We only support MinGW so far
|
|
cmd_cmake.append("-GMinGW Makefiles")
|
|
cmd_cmake.append('..')
|
|
|
|
cmd_make = ['make', 'pypi_package_copy_qiskit_simulator']
|
|
|
|
try:
|
|
cmd_make.append('-j%d' % cpu_count())
|
|
except NotImplementedError:
|
|
print('WARNING: Unable to determine number of CPUs. Using single threaded make.')
|
|
|
|
def compile_simulator():
|
|
self.mkpath('out')
|
|
os.chdir('out')
|
|
call(cmd_cmake)
|
|
call(cmd_make)
|
|
|
|
self.execute(compile_simulator, [], 'Compiling QISKit C++ Simulator')
|
|
except Exception as e:
|
|
print(str(e))
|
|
print("WARNING: Seems like the cpp simulator can't be built, Qiskit will "
|
|
"install anyway, but won't have this simulator support.")
|
|
|
|
# Restore working directory.
|
|
os.chdir(current_directory)
|
|
|
|
|
|
# This is for creating wheel specific platforms
|
|
class BinaryDistribution(Distribution):
|
|
def has_ext_modules(self):
|
|
return True
|
|
|
|
|
|
setup(
|
|
name="qiskit",
|
|
version="${QISKIT_VERSION}",
|
|
description="Software for developing quantum computing programs",
|
|
long_description="""QISKit is a software development kit for writing
|
|
quantum computing experiments, programs, and applications. Works with
|
|
Python 3.5 and 3.6""",
|
|
url="https://github.com/QISKit/qiskit-sdk-py",
|
|
author="QISKit Development Team",
|
|
author_email="qiskit@us.ibm.com",
|
|
license="Apache 2.0",
|
|
classifiers=[
|
|
"Environment :: Console",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Science/Research",
|
|
"Operating System :: Microsoft :: Windows",
|
|
"Operating System :: MacOS",
|
|
"Operating System :: POSIX :: Linux",
|
|
"Programming Language :: Python :: 3.5",
|
|
"Programming Language :: Python :: 3.6",
|
|
"Topic :: Scientific/Engineering",
|
|
],
|
|
keywords="qiskit sdk quantum",
|
|
packages=packages,
|
|
install_requires=requirements,
|
|
include_package_data=True,
|
|
python_requires=">=3.5",
|
|
cmdclass={
|
|
'build': QiskitSimulatorBuild,
|
|
},
|
|
distclass=BinaryDistribution,
|
|
extras_require={
|
|
'ProjectQ': ["projectq>=0.3.6"],
|
|
}
|
|
)
|