dev-python/qiskit-aer: new package

Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Gábor Oszkár Dénes <gaboroszkar@protonmail.com>
This commit is contained in:
Gábor Oszkár Dénes
2022-03-30 19:04:43 +02:00
parent 1a6def78eb
commit d4ea936985
4 changed files with 116 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST qiskit-aer-0.10.3.tar.gz 6657490 BLAKE2B 443f7df2259c720fb93a60659da9b1cded25f9dbdf585bd0322e9f4effe4c5955daf6587d6c3964ab4a7e4a8bf6270f857abae1cf4e6b0718801daa6a96c2aec SHA512 c882624bac373566b003a01fffa6963d4ad8796ce18786b50ef85350daac26814c147b36067eb6fce4f264919b3680246e767b5c13ac338817fd394620392079

View File

@@ -0,0 +1,10 @@
--- a/setup.py 2022-02-09 17:41:55.000000000 +0100
+++ b/setup.py 2022-03-02 14:44:04.344551645 +0100
@@ -72,7 +72,6 @@
setup_requirements = common_requirements + [
'scikit-build>=0.11.0',
- 'cmake!=3.17,!=3.17.0',
'pybind11>=2.6',
]

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<!-- comaintainers-welcomed -->
<maintainer type="person">
<email>gaboroszkar@protonmail.com</email>
<name>Gábor Oszkár Dénes</name>
</maintainer>
<longdescription>
Qiskit is an open-source framework for working with noisy quantum computers at the level of pulses, circuits, and algorithms.
Qiskit is made up of elements that each work together to enable quantum computing. This element is Aer, which provides high-performance quantum computing simulators with realistic noise models.
</longdescription>
</pkgmetadata>

View File

@@ -0,0 +1,92 @@
# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{8..10} )
inherit distutils-r1
DESCRIPTION="High performance simulator for quantum circuits that includes noise models"
HOMEPAGE="https://github.com/Qiskit/qiskit-aer"
SRC_URI="https://github.com/Qiskit/qiskit-aer/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
# The reference implementation of BLAS/CBLAS is not compatible with qiskit-aer right now,
# because importing library causes an error.
# /usr/lib/python3.9/site-packages/qiskit/providers/aer/backends/controller_wrappers.cpython-39-x86_64-linux-gnu.so: undefined symbol: slamch_
# Using sci-libs/openblas instead here,
# with the option to switch between reference/openblas implementation runtime (eselect-ldso).
COMMON_DEPEND="
>=dev-python/numpy-1.16.3[${PYTHON_USEDEP}]
>=dev-cpp/nlohmann_json-3.1.1
>=dev-libs/spdlog-1.5.0
>=dev-cpp/muParserX-4.0.8
virtual/cblas[eselect-ldso]
sci-libs/openblas[eselect-ldso]"
BDEPEND="
${COMMON_DEPEND}
>dev-util/cmake-3.17
>=dev-python/scikit-build-0.11.0[${PYTHON_USEDEP}]
>=dev-python/pybind11-2.6[${PYTHON_USEDEP}]
test? (
dev-python/ddt[${PYTHON_USEDEP}]
dev-python/fixtures[${PYTHON_USEDEP}]
)"
RDEPEND="
${COMMON_DEPEND}
>=dev-python/qiskit-terra-0.19.1[${PYTHON_USEDEP}]
>=dev-python/scipy-1.0[${PYTHON_USEDEP}]"
distutils_enable_tests pytest
# Remove cmake dependency from setup.py because of
# invalid dependency description. We put this dependency check in BDEPEND.
PATCHES=( "${FILESDIR}/qiskit-aer-0.10.3-remove-cmake-dependency.patch" )
check_openblas() {
local libdir=$(get_libdir) me="openblas"
# check blas
local current_blas=$(eselect blas show ${libdir} | cut -d' ' -f2)
if [[ ${current_blas} != "${me}" ]]; then
eerror "Current eselect: BLAS/CBLAS ($libdir) -> [${current_blas}]."
eerror "To use qiskit-aer, you have to issue (as root):"
eerror "\t eselect blas set ${libdir} ${me}"
return 1
fi
return 0
}
pkg_setup() {
if use test; then
check_openblas
if [ $? -ne 0 ]; then
die "Set blas implementation to openblas using 'eselect blas set openblas'!"
fi
fi
}
python_prepare_all() {
export DISABLE_CONAN="ON"
export DISABLE_DEPENDENCY_INSTALL="ON"
distutils-r1_python_prepare_all
}
python_test() {
# We have to hide the source code directory so tests
# do not use these, but instead the compiled library.
mv qiskit qiskit.hidden || die
epytest
mv qiskit.hidden qiskit || die
}
pkg_postinst() {
check_openblas
}