Date: Wednesday, December 1, 2021 @ 13:06:59 Author: foutrelis Revision: 1059268
archrelease: copy trunk to community-staging-x86_64 Added: ceph/repos/community-staging-x86_64/ ceph/repos/community-staging-x86_64/PKGBUILD (from rev 1059267, ceph/trunk/PKGBUILD) ceph/repos/community-staging-x86_64/backport_mgr_disabled_modules_workaround_PR34846.patch (from rev 1059267, ceph/trunk/backport_mgr_disabled_modules_workaround_PR34846.patch) ceph/repos/community-staging-x86_64/boost-1.67.patch (from rev 1059267, ceph/trunk/boost-1.67.patch) ceph/repos/community-staging-x86_64/ceph-12.2.4-boost-build-none-options.patch (from rev 1059267, ceph/trunk/ceph-12.2.4-boost-build-none-options.patch) ceph/repos/community-staging-x86_64/ceph-13.2.0-cflags.patch (from rev 1059267, ceph/trunk/ceph-13.2.0-cflags.patch) ceph/repos/community-staging-x86_64/ceph-13.2.2-dont-install-sysvinit-script.patch (from rev 1059267, ceph/trunk/ceph-13.2.2-dont-install-sysvinit-script.patch) ceph/repos/community-staging-x86_64/ceph-14.2.0-cflags.patch (from rev 1059267, ceph/trunk/ceph-14.2.0-cflags.patch) ceph/repos/community-staging-x86_64/ceph-14.2.0-cython-0.29.patch (from rev 1059267, ceph/trunk/ceph-14.2.0-cython-0.29.patch) ceph/repos/community-staging-x86_64/ceph-14.2.0-link-crc32-statically.patch (from rev 1059267, ceph/trunk/ceph-14.2.0-link-crc32-statically.patch) ceph/repos/community-staging-x86_64/ceph-15.2.0-rocksdb-cmake.patch (from rev 1059267, ceph/trunk/ceph-15.2.0-rocksdb-cmake.patch) ceph/repos/community-staging-x86_64/ceph-15.2.4-system-uring.patch (from rev 1059267, ceph/trunk/ceph-15.2.4-system-uring.patch) ceph/repos/community-staging-x86_64/ceph-15.2.5-missing-includes.patch (from rev 1059267, ceph/trunk/ceph-15.2.5-missing-includes.patch) ceph/repos/community-staging-x86_64/ceph.sysusers (from rev 1059267, ceph/trunk/ceph.sysusers) ceph/repos/community-staging-x86_64/disable-broken-mgr-dashboard-test.patch (from rev 1059267, ceph/trunk/disable-broken-mgr-dashboard-test.patch) ceph/repos/community-staging-x86_64/disable-empty-readable.sh-test.patch (from rev 1059267, ceph/trunk/disable-empty-readable.sh-test.patch) ceph/repos/community-staging-x86_64/exclude-frontend-from-mgr-dashboard-cov.patch (from rev 1059267, ceph/trunk/exclude-frontend-from-mgr-dashboard-cov.patch) ceph/repos/community-staging-x86_64/fix-ceph_disk-python-interpreter.patch (from rev 1059267, ceph/trunk/fix-ceph_disk-python-interpreter.patch) ceph/repos/community-staging-x86_64/fix-mgr-dashboard-frontend-unittests-dist-stuff.patch (from rev 1059267, ceph/trunk/fix-mgr-dashboard-frontend-unittests-dist-stuff.patch) ceph/repos/community-staging-x86_64/fix-mgr-dashboard-partial_dict.patch (from rev 1059267, ceph/trunk/fix-mgr-dashboard-partial_dict.patch) ceph/repos/community-staging-x86_64/fix-python2-paths.patch (from rev 1059267, ceph/trunk/fix-python2-paths.patch) ceph/repos/community-staging-x86_64/fix-tox-test-commands.patch (from rev 1059267, ceph/trunk/fix-tox-test-commands.patch) ceph/repos/community-staging-x86_64/fix_snappy_namespace_uint.patch (from rev 1059267, ceph/trunk/fix_snappy_namespace_uint.patch) ceph/repos/community-staging-x86_64/glibc2.32-strsignal-compat-backported.patch (from rev 1059267, ceph/trunk/glibc2.32-strsignal-compat-backported.patch) ceph/repos/community-staging-x86_64/mgr-dashboard-update-pylint-to-2.6.0.patch (from rev 1059267, ceph/trunk/mgr-dashboard-update-pylint-to-2.6.0.patch) ceph/repos/community-staging-x86_64/qa-src-update-mypy-to-0.782.patch (from rev 1059267, ceph/trunk/qa-src-update-mypy-to-0.782.patch) ceph/repos/community-staging-x86_64/remove-distro-version-detection.patch (from rev 1059267, ceph/trunk/remove-distro-version-detection.patch) ceph/repos/community-staging-x86_64/suppress-pylint-warnings.patch (from rev 1059267, ceph/trunk/suppress-pylint-warnings.patch) ceph/repos/community-staging-x86_64/use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch (from rev 1059267, ceph/trunk/use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch) ceph/repos/community-staging-x86_64/use-threadsafe-death-tests-objectstore-memstore.patch (from rev 1059267, ceph/trunk/use-threadsafe-death-tests-objectstore-memstore.patch) --------------------------------------------------------+ PKGBUILD | 353 +++++++ backport_mgr_disabled_modules_workaround_PR34846.patch | 207 ++++ boost-1.67.patch | 11 ceph-12.2.4-boost-build-none-options.patch | 26 ceph-13.2.0-cflags.patch | 26 ceph-13.2.2-dont-install-sysvinit-script.patch | 15 ceph-14.2.0-cflags.patch | 13 ceph-14.2.0-cython-0.29.patch | 17 ceph-14.2.0-link-crc32-statically.patch | 11 ceph-15.2.0-rocksdb-cmake.patch | 15 ceph-15.2.4-system-uring.patch | 66 + ceph-15.2.5-missing-includes.patch | 12 ceph.sysusers | 1 disable-broken-mgr-dashboard-test.patch | 13 disable-empty-readable.sh-test.patch | 6 exclude-frontend-from-mgr-dashboard-cov.patch | 11 fix-ceph_disk-python-interpreter.patch | 8 fix-mgr-dashboard-frontend-unittests-dist-stuff.patch | 50 + fix-mgr-dashboard-partial_dict.patch | 18 fix-python2-paths.patch | 52 + fix-tox-test-commands.patch | 160 +++ fix_snappy_namespace_uint.patch | 12 glibc2.32-strsignal-compat-backported.patch | 63 + mgr-dashboard-update-pylint-to-2.6.0.patch | 671 +++++++++++++++ qa-src-update-mypy-to-0.782.patch | 65 + remove-distro-version-detection.patch | 10 suppress-pylint-warnings.patch | 23 use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch | 35 use-threadsafe-death-tests-objectstore-memstore.patch | 10 29 files changed, 1980 insertions(+) Copied: ceph/repos/community-staging-x86_64/PKGBUILD (from rev 1059267, ceph/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,353 @@ +# Maintainer: Thore Bödecker <fox...@archlinux.org> +# Contributor: Sébastien "Seblu" Luttringer <se...@archlinux.org> + +pkgbase='ceph' +pkgname=('ceph' 'ceph-libs' 'ceph-mgr') +_zstdver=1.5.0 +pkgver=15.2.14 +pkgrel=3 +pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system' +arch=('x86_64') +url='https://ceph.com/' +license=('GPL') +makedepends=("zstd=${_zstdver}" 'bash' 'bc' 'boost' 'boost-libs' 'bzip2' 'c-ares' 'cmake' 'coreutils' 'coffeescript' + 'cpio' 'crypto++' 'cryptsetup' 'cunit' 'curl' 'cython' 'expat' + 'fcgi' 'fontconfig' 'fuse2' 'fuse3' 'fmt' 'gcc' 'gcc-libs' 'git' 'glibc' 'gmock' 'gnutls' + 'gperf' 'gperftools' 'gptfdisk' 'gtest' 'hwloc' 'inetutils' 'java-runtime' + 'jq' 'jre11-openjdk-headless' 'junit' 'keyutils' 'leveldb' 'libaio' + 'libatomic_ops' 'libcap' 'libcap-ng' 'libcroco' 'libcurl-compat' + 'libedit' 'libgudev' 'libnl' 'librabbitmq-c' 'libtool' 'util-linux' + 'libuv' 'libxml2' 'librdkafka' 'libpciaccess' 'lsb-release' 'lz4' 'ncurses' + 'nss' 'numactl' 'oath-toolkit' 'openssl' 'parted' 'pcre' 'pcre2' 'pkgconf' 'protobuf' + 'procps-ng' 'python-astroid' 'python-attrs' 'python-bcrypt' + 'python-cheroot' 'python-cherrypy' 'python-coverage' 'python-dateutil' + 'python-elasticsearch' 'python-flask' 'python-flask-restful' + 'python-google-api-python-client' 'python-google-auth' + 'python-google-auth-httplib2' 'python-grpcio' 'python-isort' + 'python-jinja' 'python-lazy-object-proxy' 'python-mccabe' + 'python-isodate' 'python-defusedxml' 'python-pkgconfig' 'python-protobuf' + 'python-lxml' 'python-xmlsec' 'python-yaml' + 'python-more-itertools' 'python-numpy' 'python-pbr' 'python-pecan' + 'python-pip' 'python-pluggy' 'python-portend' 'python-prettytable' + 'python-prometheus_client' 'python-py' 'python-pycparser' + 'python-pyjwt' 'python-pyopenssl' 'python-pytz' 'python-requests' + 'python-routes' 'python-scikit-learn' 'python-scipy' + 'python-setuptools' 'python-six' 'python-sphinx' 'python-tempora' + 'python-virtualenv' 'python-werkzeug' 'python-wrapt' 'rabbitmq' + 'sed' 'snappy' 'socat' 'systemd' 'systemd-libs' 'valgrind' + 'xfsprogs' 'xmlstarlet' 'xmlsec' 'xxhash' 'yaml-cpp' 'yasm' 'zlib' ) +checkdepends=('python-mock' 'python-nose' 'python-pycodestyle' 'python-pylint' + 'python-pytest' 'python-pytest-cov') +options=('emptydirs') +source=( + "https://download.ceph.com/tarballs/${pkgbase}-${pkgver}.tar.gz" + 'ceph.sysusers' + "zstd-${_zstdver}.tar.gz::https://github.com/facebook/zstd/archive/v${_zstdver}.tar.gz" + #'glibc2.32-strsignal-compat-backported.patch' + 'ceph-14.2.0-cflags.patch' + 'ceph-12.2.4-boost-build-none-options.patch' + 'ceph-13.2.0-cflags.patch' + 'ceph-13.2.2-dont-install-sysvinit-script.patch' + # 'ceph-14.2.0-link-crc32-statically.patch' + 'ceph-14.2.0-cython-0.29.patch' + 'ceph-15.2.0-rocksdb-cmake.patch' + 'ceph-15.2.4-system-uring.patch' + # 'ceph-15.2.5-missing-includes.patch' + 'disable-empty-readable.sh-test.patch' + 'qa-src-update-mypy-to-0.782.patch' + 'fix-mgr-dashboard-partial_dict.patch' + + # snappy 1.1.9 removed major parts from their namespace, including the + # snappy::uint32 which was an alias for std::uint32_t + 'fix_snappy_namespace_uint.patch' + + # Add python >= 3.8 workaround logic for incompatible modules + # This has been designated for upstream backporting into the octupus (15) and pacific (16) branches. + # TODO: check if merged and included in next releases + # https://tracker.ceph.com/issues/45147 + # https://github.com/ceph/ceph/pull/34846 + # 'backport_mgr_disabled_modules_workaround_PR34846.patch' +) +sha512sums=('eacc4dea0d8dfe2753aff78d89324d81c5634a784313c3da8ded778e2734958c216f8c705b25f070d7ba66b559424ad3c47cb68852f66f8c9c83a83ca78ad5a5' + '4354001c1abd9a0c385ba7bd529e3638fb6660b6a88d4e49706d4ac21c81b8e829303a20fb5445730bdac18c4865efb10bc809c1cd56d743c12aa9a52e160049' + '25b657529a698eec891f92ff4a085d1fd95d2ff938ce52c8a4ff6163eb0b668ec642dd09e0db190652638cd92371006afa01d8e437437762c4097ad301675c33' + '9e6bb46d5bbdc5d93f4f026b2a8d6bdb692d9ea6e7018c1bb0188d95ea8574c76238d968b340fd67ddaa3d8183b310e393e3549dc3a63a795fde696413b0ca94' + '6ff46a90d76f667fa23be0f9eb1ed2fb7e30af9a2621aec19944d0a22a431a0f5721603c588286e483ff55c14aac920adfccb039c9678a87cc59640dd70367ae' + '8ec0d668fefee12d2c7f5b5297dd81fc6a559f5823d069e6395d9b4240110eb8f95049d3054697a459948c1f3784b4450539849cf9d7f3b1aa1c7fbd96c475df' + 'ea069b75b786c22166c609b127b512802cc5c6e9512d792d7b7b34d276f5b86d57c8c35cfc7b5c855a59c0ba87ba1aabe2ca26da72b26bff46b6ba8410ddb27e' + '82c1608928ee669ef60b8930ce82c443152c446e669e7bde9ce32f78571afb19a9620c3818b69ac8cb3ea33e7d7ac40f77c89162c71b19b157336d907fa23e3d' + '20256de5c3227caa149f8285bcc90fcbd67be8cefa568fb72ad0d43688f1f62db7c7fc231dfd4ecf2dd11be68bf1ccc284ebbc691a82a26f3968200f12c82097' + '8258661e56b5360f4260fdd29b07bac4d415068a112b61ca8c55c529fb1593d8d61a0d59a4eec8f1567b97167c058082198d008f55f8ee701cb46489df5f7823' + '2234d005df71b3b6013e6b76ad07a5791e3af7efec5f41c78eb1a9c92a22a67f0be9560be59b52534e90bfe251bcf32c33d5d40163f3f8f7e7420691f0f4a222' + '204741c65b8ceeddae0a58a49e2b4249ee7ffc624ce8d9faa6284af198abe63bffb6758e064eeff6d1857be044647f99749a45443e258b35e92cc36b9edeba80' + '79e337a78cc4bd9ed8c8ab66831b3efd5a3a34e16d2c73ecedef03d2a34c7ac65ea25641a808913cd2dc2dc0f992fac35822efe4188622add6898dce1e5f13e3' + '4b4d0528d909fb735975db290bc8495ee626fc78d68b82b3525326cb69326cfc310c3078c529246f3d76cec590a3a7c4e92950009211590ebfe55583c4f5b71d') + + +# -fno-plt causes linker errors (undefined reference to internal methods) +# similar issue: https://bugs.archlinux.org/task/54845 +# https://github.com/intel/media-driver/commit/d95d8f7ab7ac94a2e0f4ee6a4b4794898dc2d3b7 +# as of today (2019-07-12) the upstream maintainers do not consider this a bug in their code +# (IMHO rightfully so) and thus we strip the option here +export CFLAGS="${CFLAGS/-fno-plt/}" +export CXXFLAGS="${CXXFLAGS/-fno-plt/}" + + +prepare() { + cd "${srcdir}/${pkgbase}-${pkgver}" + + # apply patches from the source array + local filename + for filename in "${source[@]%%::*}"; do + if [[ "${filename}" =~ \.patch$ ]]; then + echo "Applying patch ${filename##*/}" + patch -p1 -N -i "${srcdir}/${filename##*/}" + fi + done + + # temporarily disable unsubscriptable-object (buggy on Python 3.9) + # https://github.com/PyCQA/pylint/issues/3882 + sed -i '/^disable=/a\ unsubscriptable-object,' \ + src/pybind/mgr/dashboard/.pylintrc + + # mypy complains about this but the exception is handled; not sure what's up + sed -i 's/from base64 import encodestring$/& # type: ignore/' \ + src/pybind/mgr/dashboard/awsauth.py + + # suppress deprecation warnings + sed -i '/#ifndef CEPH_CONFIG_H/i#define BOOST_ALLOW_DEPRECATED_HEADERS' \ + src/common/config.h + sed -i '/#ifndef CEPH_TYPES_H/i#define BOOST_ALLOW_DEPRECATED_HEADERS' \ + src/include/types.h + + # fix boost stuff for system-boost + find . -name '*.cmake' -or -name 'CMakeLists.txt' -print0 | xargs --null \ + sed -r \ + -e 's|Boost::|boost_|g' \ + -e 's|Boost_|boost_|g' \ + -e 's|[Bb]oost_boost|boost_system|g' -i || exit 1 + + # remove bundled zstd and replace with newer release + rm -rf src/zstd + ln -sf "${srcdir}/zstd-${_zstdver}" src/zstd + + # remove tests that require root privileges + rm src/test/cli/ceph-authtool/cap*.t + + # disable/remove broken tests + sed -i '/add_ceph_test(smoke.sh/d' src/test/CMakeLists.txt + sed -i '/add_ceph_test(safe-to-destroy.sh/d' src/test/osd/CMakeLists.txt +} + +build() { + cd "${srcdir}/${pkgbase}-${pkgver}" + + # workaround for boost 1.74 -- similar fix exists upstream but I could + # not get it to work: https://github.com/ceph/ceph/commit/3d708219092d + CPPFLAGS+=' -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT' + + export CFLAGS+=" ${CPPFLAGS}" + export CXXFLAGS+=" ${CPPFLAGS}" + export PYTHON_VERSION="$(python --version | awk '{print $2}')" + export PYTHON_INCLUDE_DIR="$(python -c "from sysconfig import get_path; print(get_path('include'))")" + export CMAKE_BUILD_TYPE='RelWithDebInfo' + export CMAKE_WARN_UNUSED_CLI=no + + cmake \ + -B build \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR=/etc \ + -DCMAKE_INSTALL_SBINDIR=/usr/bin \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DCEPH_SYSTEMD_ENV_DIR=/etc/default \ + -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \ + -DCMAKE_INSTALL_SYSTEMD_SERVICEDIR=/usr/lib/systemd/system \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DENABLE_GIT_VERSION=ON \ + -DWITH_PYTHON2=OFF \ + -DWITH_PYTHON3="${PYTHON_VERSION}" \ + -DMGR_PYTHON_VERSION=3 \ + -DPYTHON_INCLUDE_DIR="${PYTHON_INCLUDE_DIR:?}" \ + -DWITH_BABELTRACE=OFF \ + -DWITH_LTTNG=OFF \ + -DWITH_OPENLDAP=OFF \ + -DWITH_RDMA=OFF \ + -DWITH_OCF=OFF \ + -DWITH_DPDK=OFF \ + -DWITH_SPDK=OFF \ + -DWITH_CEPHFS=ON \ + -DWITH_CEPHFS_JAVA=ON \ + -DWITH_CEPHFS_SHELL=ON \ + -DWITH_FUSE=ON \ + -DWITH_LZ4=ON \ + -DWITH_XFS=ON \ + -DWITH_MGR=ON \ + -DWITH_MGR_DASHBOARD_FRONTEND=ON \ + -DDASHBOARD_FRONTEND_LANGS="ALL" \ + -DWITH_RADOSGW=ON \ + -DWITH_RADOSGW_FCGI_FRONTEND=OFF \ + -DWITH_RADOSGW_BEAST_FRONTEND=ON \ + -DWITH_RADOSGW_BEAST_OPENSSL=ON \ + -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ + -DWITH_SYSTEMD=ON \ + -DWITH_SYSTEM_BOOST=ON \ + -DWITH_BOOST_CONTEXT=ON \ + -DWITH_SYSTEM_GTEST=OFF \ + -DWITH_SYSTEM_NPM=OFF \ + -DENABLE_SHARED=ON \ + -DWITH_TESTS=ON \ + -Wno-dev + + VERBOSE=1 make -C build all +} + +### +### testsuite currently broken, needs some debugging +### +# check() { +# cd "${srcdir}/${pkgbase}-${pkgver}" +# +# export CTEST_PARALLEL_LEVEL=8 +# export CTEST_OUTPUT_ON_FAILURE=1 +# VERBOSE=1 make -C build check +# +# # sometimes processes are not properly terminated... +# for process in ceph-mon ceph-mgr ceph-osd; do +# pkill -9 "${process}" || true +# done +# } + +package_ceph-libs() { + depends=('boost-libs' 'curl' 'glibc' 'keyutils' 'libutil-linux' 'bzip2' 'lz4' 'nss' + 'oath-toolkit' 'python' 'snappy' 'systemd-libs' 'fmt') + + cd "${srcdir}/${pkgbase}-${pkgver}" + + # main install + VERBOSE=1 make DESTDIR="${pkgdir}" -C build install + + # remove stuff that goes into the ceph package + rm -rf "${pkgdir}"/usr/lib/{ceph/mgr,systemd,sysusers.d,tmpfiles.d} + rm -rf "${pkgdir}/usr/share" + rm -rf "${pkgdir}/usr/sbin" + rm -rf "${pkgdir}/usr/bin" + rm -rf "${pkgdir}/etc" + rm -rf "${pkgdir}/var" +} + +package_ceph() { + depends=("ceph-libs=${pkgver}-${pkgrel}" + 'boost-libs' 'curl' 'fuse2' 'fuse3' 'fmt' 'glibc' 'gperftools' 'java-runtime' + 'keyutils' 'leveldb' 'libaio' 'libutil-linux' 'librdkafka' + 'lsb-release' 'ncurses' + 'nss' 'oath-toolkit' 'python' 'python-bcrypt' 'python-setuptools' + 'python-prettytable' 'python-cmd2' 'python-dateutil' 'snappy' 'sudo' 'systemd-libs' + 'python-flask' 'python-pecan' 'python-pyopenssl' 'python-requests' 'python-werkzeug' 'xfsprogs' + 'python-yaml' 'python-pyaml') + + cd "${srcdir}/${pkgbase}-${pkgver}" + + # main install + VERBOSE=1 make DESTDIR="${pkgdir}" -C build install + + # fix sbin dir (cmake opt seems to have no effect) + mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/" + rm -rf "${pkgdir}/usr/sbin" + + # remove stuff that is in the ceph-libs package + find "${pkgdir}/usr/lib" -maxdepth 1 -type f -delete + find "${pkgdir}/usr/lib" -maxdepth 1 -type l -delete + find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type f -delete + find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type l -delete + rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},rados-classes} + rm -rf "${pkgdir}"/usr/lib/python* + rm -rf "${pkgdir}/usr/include" + + # remove stuff that is in the ceph-mgr package + rm -rf "${pkgdir}"/usr/{bin/ceph-mgr,share/ceph/mgr,lib/systemd/system/ceph-mgr*} + + # remove _test_ binaries from the package, not needed + find "${pkgdir}/usr/bin" -maxdepth 1 -type f -iname 'ceph_test_*' -delete + + # install tmpfiles.d and sysusers.d stuff + install -Dm644 "${srcdir}/${pkgbase}-${pkgver}/systemd/ceph.tmpfiles.d" \ + "${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf" + install -Dm644 "${srcdir}/ceph.sysusers" \ + "${pkgdir}/usr/lib/sysusers.d/${pkgbase}.conf" + + # remove debian init script + rm -rf "${pkgdir}/etc/init.d" + + # remove drop.ceph.com ssh stuff + rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com + rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com.pub + rm -f "${pkgdir}"/usr/share/ceph/known_hosts_drop.ceph.com + + # fix bash completions path + install -d -m 755 "${pkgdir}/usr/share/bash-completion" + mv "${pkgdir}"/{etc/bash_completion.d,usr/share/bash-completion/completions} + + # fix EnvironmentFile location in systemd service files + sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service + + # prepare some paths and set correct permissions + install -D -d -m750 -o 0 -g 340 "${pkgdir}/etc/ceph" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/log/ceph" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-mds" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-osd" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-rgw" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mon" + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/osd" +} + +package_ceph-mgr() { + depends=("ceph=${pkgver}-${pkgrel}" "ceph-libs=${pkgver}-${pkgrel}" + 'bash' 'boost-libs' 'coffeescript' 'curl' 'gperftools' 'nodejs' 'nss' + 'python' 'python-cherrypy' 'python-flask-restful' 'python-pecan' + 'python-pyjwt' 'python-routes' 'python-jsonpatch' 'python-more-itertools' 'python-numpy' + 'python-scipy' 'python-six') + optdepends=('python-influxdb: influx module' + 'python-kubernetes: rook module' + 'python-prometheus_client: prometheus module' + 'python-remoto: ssh module') + conflicts=('ceph<14.2.1-1') + + cd "${srcdir}/${pkgbase}-${pkgver}" + + # main install + VERBOSE=1 make DESTDIR="${pkgdir}" -C build install + + # fix sbin dir (cmake opt seems to have no effect) + mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/" + rm -rf "${pkgdir}/usr/sbin" + + # remove everything except mgr related stuff, rest is in ceph/ceph-libs + rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},rados-classes} + rm -rf "${pkgdir}/usr/include" + find "${pkgdir}/usr/bin" -maxdepth 1 -type f -not -name 'ceph-mgr' -delete + find "${pkgdir}"/usr/lib/systemd/system -maxdepth 1 -type f -not -iname 'ceph-mgr*' -delete + find "${pkgdir}"/usr/lib -maxdepth 1 -type f -delete + find "${pkgdir}"/usr/lib -maxdepth 1 -type l -delete + rm -rf "${pkgdir}"/etc + rm -rf "${pkgdir}"/var + rm -rf "${pkgdir}"/usr/lib/{ceph,sysusers.d,tmpfiles.d} + rm -rf "${pkgdir}"/usr/lib/python* + rm -rf "${pkgdir}"/usr/share/{bash-completion,doc,java,man} + + # remove debian init script + rm -rf "${pkgdir}/etc/init.d" + + # remove drop.ceph.com ssh stuff + rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com + rm -f "${pkgdir}"/usr/share/ceph/id_rsa_drop.ceph.com.pub + rm -f "${pkgdir}"/usr/share/ceph/known_hosts_drop.ceph.com + + # fix EnvironmentFile location in systemd service files + sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service + + # prepare some paths and set correct permissions + install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mgr" +} + +# vim:set ts=2 sw=2 et: Copied: ceph/repos/community-staging-x86_64/backport_mgr_disabled_modules_workaround_PR34846.patch (from rev 1059267, ceph/trunk/backport_mgr_disabled_modules_workaround_PR34846.patch) =================================================================== --- community-staging-x86_64/backport_mgr_disabled_modules_workaround_PR34846.patch (rev 0) +++ community-staging-x86_64/backport_mgr_disabled_modules_workaround_PR34846.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,207 @@ +From 40d06ce623f19172721a2f1d5b4f4f8b642a3077 Mon Sep 17 00:00:00 2001 +From: Kefu Chai <kc...@redhat.com> +Date: Thu, 30 Apr 2020 10:43:01 +0800 +Subject: [PATCH] mgr/PyModuleRegistry: probe modules using std::filesystem + +for better readability + +Signed-off-by: Kefu Chai <kc...@redhat.com> +--- + src/mgr/PyModuleRegistry.cc | 43 +++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 23 deletions(-) + +diff --git a/src/mgr/PyModuleRegistry.cc b/src/mgr/PyModuleRegistry.cc +index 440f7c8bafc1e..466da5d404964 100644 +--- a/src/mgr/PyModuleRegistry.cc ++++ b/src/mgr/PyModuleRegistry.cc +@@ -11,6 +11,17 @@ + * Foundation. See file COPYING. + */ + ++#include "PyModuleRegistry.h" ++ ++#if __has_include(<filesystem>) ++#include <filesystem> ++namespace fs = std::filesystem; ++#elif __has_include(<experimental/filesystem>) ++#include <experimental/filesystem> ++namespace fs = std::experimental::filesystem; ++#else ++#error std::filesystem not available! ++#endif + + #include "include/stringify.h" + #include "common/errno.h" +@@ -24,8 +35,6 @@ + + #include "ActivePyModules.h" + +-#include "PyModuleRegistry.h" +- + #define dout_context g_ceph_context + #define dout_subsys ceph_subsys_mgr + +@@ -258,29 +267,17 @@ void PyModuleRegistry::shutdown() + + std::set<std::string> PyModuleRegistry::probe_modules(const std::string &path) const + { +- DIR *dir = opendir(path.c_str()); +- if (!dir) { +- return {}; +- } +- +- std::set<std::string> modules_out; +- struct dirent *entry = NULL; +- while ((entry = readdir(dir)) != NULL) { +- string n(entry->d_name); +- string fn = path + "/" + n; +- struct stat st; +- int r = ::stat(fn.c_str(), &st); +- if (r == 0 && S_ISDIR(st.st_mode)) { +- string initfn = fn + "/module.py"; +- r = ::stat(initfn.c_str(), &st); +- if (r == 0) { +- modules_out.insert(n); +- } ++ std::set<std::string> modules; ++ for (const auto& entry: fs::directory_iterator(path)) { ++ if (!fs::is_directory(entry)) { ++ continue; ++ } ++ auto module_path = entry.path() / "module.py"; ++ if (fs::exists(module_path)) { ++ modules.emplace(entry.path().filename()); + } + } +- closedir(dir); +- +- return modules_out; ++ return modules; + } + + int PyModuleRegistry::handle_command( +From 067adbf9a032b5de793fd0b41b071f24f075270a Mon Sep 17 00:00:00 2001 +From: Kefu Chai <kc...@redhat.com> +Date: Thu, 30 Apr 2020 11:34:07 +0800 +Subject: [PATCH] mgr: do not load disabled modules + +an option named "mgr_disabled_modules" is added in this change to +prevent mgr from loading modules listed in this option. because mgr +loads *all* modules found in the configured path, and per +https://tracker.ceph.com/issues/45147, python subinterpreter could hang +when loading numpy, so this behavior practically creates a deadlock +in mgr. + +this issue is found when mgr uses python3.8 runtime. in development +environment, it'd be inconvenient to disable the offending mgr module +without changing the source code, even if we can choose to not install +them, for instance, the enduser can workaround this issue by +uninstalling `ceph-mgr-diskprediction-local`. + +an option would be useful in this case, so we can add the module to the +list before mgr tries to load it. + +as this issue is found with python3.8 + diskprediction_local (numpy), so +this mgr module is disabled by default if mgr is compiled with python3.8 +runtime. + +Fixes: https://tracker.ceph.com/issues/45147 +Signed-off-by: Kefu Chai <kc...@redhat.com> +--- + CMakeLists.txt | 5 +++++ + src/common/options.cc | 14 ++++++++++++++ + src/include/config-h.in.cmake | 3 +++ + src/mgr/PyModuleRegistry.cc | 11 ++++++++++- + 4 files changed, 32 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0f7e86414c2d2..fa00d1316bcc0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -442,6 +442,11 @@ if(WITH_MGR) + set(MGR_PYTHON_LIBRARIES ${Python3_LIBRARIES}) + set(MGR_PYTHON_VERSION_MAJOR ${Python3_VERSION_MAJOR}) + set(MGR_PYTHON_VERSION_MINOR ${Python3_VERSION_MINOR}) ++ # https://tracker.ceph.com/issues/45147 ++ if(Python3_VERSION VERSION_GREATER_EQUAL 3.8) ++ set(MGR_DISABLED_MODULES "diskprediction_local") ++ message(STATUS "mgr module disabled for ${Python3_VERSION}: ${MGR_DISABLED_MODULES}") ++ endif() + # Boost dependency check deferred to Boost section + endif(WITH_MGR) + +diff --git a/src/common/options.cc b/src/common/options.cc +index be1e955ab51ea..c78d9b69d7591 100644 +--- a/src/common/options.cc ++++ b/src/common/options.cc +@@ -5169,6 +5169,20 @@ std::vector<Option> get_global_options() { + .add_service("mgr") + .set_description("Filesystem path to manager modules."), + ++ Option("mgr_disabled_modules", Option::TYPE_STR, Option::LEVEL_ADVANCED) ++#ifdef MGR_DISABLED_MODULES ++ .set_default(MGR_DISABLED_MODULES) ++#endif ++ .set_flag(Option::FLAG_STARTUP) ++ .add_service("mgr") ++ .set_description("List of manager modules never get loaded") ++ .set_long_description("A comma delimited list of module names. This list " ++ "is read by manager when it starts. By default, manager loads all " ++ "modules found in specified 'mgr_module_path', and it starts the " ++ "enabled ones as instructed. The modules in this list will not be " ++ "loaded at all.") ++ .add_see_also("mgr_module_path"), ++ + Option("mgr_initial_modules", Option::TYPE_STR, Option::LEVEL_BASIC) + .set_default("restful iostat") + .set_flag(Option::FLAG_NO_MON_UPDATE) +diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake +index dc213938f5c9c..ea550c81e3a0e 100644 +--- a/src/include/config-h.in.cmake ++++ b/src/include/config-h.in.cmake +@@ -309,6 +309,9 @@ + + #cmakedefine MGR_PYTHON_EXECUTABLE "@MGR_PYTHON_EXECUTABLE@" + ++/* the default value of "mgr_disabled_module" option */ ++#cmakedefine MGR_DISABLED_MODULES "@MGR_DISABLED_MODULES@" ++ + /* Define to 1 if you have the `getprogname' function. */ + #cmakedefine HAVE_GETPROGNAME 1 + +diff --git a/src/mgr/PyModuleRegistry.cc b/src/mgr/PyModuleRegistry.cc +index 466da5d404964..2e2e080aa76c0 100644 +--- a/src/mgr/PyModuleRegistry.cc ++++ b/src/mgr/PyModuleRegistry.cc +@@ -25,6 +25,7 @@ namespace fs = std::experimental::filesystem; + + #include "include/stringify.h" + #include "common/errno.h" ++#include "common/split.h" + + #include "BaseMgrModule.h" + #include "PyOSDMap.h" +@@ -267,14 +268,22 @@ void PyModuleRegistry::shutdown() + + std::set<std::string> PyModuleRegistry::probe_modules(const std::string &path) const + { ++ const auto opt = g_conf().get_val<std::string>("mgr_disabled_modules"); ++ const auto disabled_modules = ceph::split(opt); ++ + std::set<std::string> modules; + for (const auto& entry: fs::directory_iterator(path)) { + if (!fs::is_directory(entry)) { + continue; + } ++ const std::string name = entry.path().filename(); ++ if (std::count(disabled_modules.begin(), disabled_modules.end(), name)) { ++ dout(10) << "ignoring disabled module " << name << dendl; ++ continue; ++ } + auto module_path = entry.path() / "module.py"; + if (fs::exists(module_path)) { +- modules.emplace(entry.path().filename()); ++ modules.emplace(name); + } + } + return modules; Copied: ceph/repos/community-staging-x86_64/boost-1.67.patch (from rev 1059267, ceph/trunk/boost-1.67.patch) =================================================================== --- community-staging-x86_64/boost-1.67.patch (rev 0) +++ community-staging-x86_64/boost-1.67.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,11 @@ +--- a/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:35.407273176 +0300 ++++ b/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:29.800506081 +0300 +@@ -1,6 +1,8 @@ + // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- + // vim: ts=8 sw=2 smarttab + ++#define BOOST_BIND_NO_PLACEHOLDERS ++ + #include "test/librbd/test_mock_fixture.h" + #include "test/journal/mock/MockJournaler.h" + #include "test/librbd/test_support.h" Copied: ceph/repos/community-staging-x86_64/ceph-12.2.4-boost-build-none-options.patch (from rev 1059267, ceph/trunk/ceph-12.2.4-boost-build-none-options.patch) =================================================================== --- community-staging-x86_64/ceph-12.2.4-boost-build-none-options.patch (rev 0) +++ community-staging-x86_64/ceph-12.2.4-boost-build-none-options.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,26 @@ +diff --git a/src/boost/tools/build/src/tools/features/debug-feature.jam b/src/boost/tools/build/src/tools/features/debug-feature.jam +index 04958f9a..38b6acf1 100644 +--- a/src/boost/tools/build/src/tools/features/debug-feature.jam ++++ b/src/boost/tools/build/src/tools/features/debug-feature.jam +@@ -8,7 +8,7 @@ + import feature ; + + feature.feature debug-symbols +- : on off ++ : on off none + : propagated ; + + feature.feature profiling +diff --git a/src/boost/tools/build/src/tools/features/optimization-feature.jam b/src/boost/tools/build/src/tools/features/optimization-feature.jam +index 761f76f1..fb2a5dec 100644 +--- a/src/boost/tools/build/src/tools/features/optimization-feature.jam ++++ b/src/boost/tools/build/src/tools/features/optimization-feature.jam +@@ -8,7 +8,7 @@ + import feature ; + + feature.feature optimization +- : off speed space ++ : off none speed space + : propagated ; + + feature.feature inlining Copied: ceph/repos/community-staging-x86_64/ceph-13.2.0-cflags.patch (from rev 1059267, ceph/trunk/ceph-13.2.0-cflags.patch) =================================================================== --- community-staging-x86_64/ceph-13.2.0-cflags.patch (rev 0) +++ community-staging-x86_64/ceph-13.2.0-cflags.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,26 @@ +diff --git a/cmake/modules/BuildBoost.cmake b/cmake/modules/BuildBoost.cmake +index d6572115a4..cc0bdddc9f 100644 +--- a/cmake/modules/BuildBoost.cmake ++++ b/cmake/modules/BuildBoost.cmake +@@ -62,7 +62,7 @@ function(do_build_boost version) + else() + list(APPEND boost_features "address-model=32") + endif() +- set(BOOST_CXXFLAGS "-fPIC -w") # check on arm, etc <---XXX ++ set(BOOST_CXXFLAGS "${CMAKE_CXX_FLAGS} -fPIC -w") # check on arm, etc <---XXX + list(APPEND boost_features "cxxflags=${BOOST_CXXFLAGS}") + + list(FIND Boost_BUILD_COMPONENTS "python" with_python) +diff --git a/src/compressor/zstd/CMakeLists.txt b/src/compressor/zstd/CMakeLists.txt +index 5a80aa539c..8d6ff5c8f0 100644 +--- a/src/compressor/zstd/CMakeLists.txt ++++ b/src/compressor/zstd/CMakeLists.txt +@@ -1,7 +1,7 @@ + # zstd + + # libzstd - build it statically +-set(ZSTD_C_FLAGS "-fPIC -Wno-unused-variable -O3") ++set(ZSTD_C_FLAGS "-fPIC -Wno-unused-variable $ENV{CFLAGS} -O3") + + include(ExternalProject) + ExternalProject_Add(zstd_ext Copied: ceph/repos/community-staging-x86_64/ceph-13.2.2-dont-install-sysvinit-script.patch (from rev 1059267, ceph/trunk/ceph-13.2.2-dont-install-sysvinit-script.patch) =================================================================== --- community-staging-x86_64/ceph-13.2.2-dont-install-sysvinit-script.patch (rev 0) +++ community-staging-x86_64/ceph-13.2.2-dont-install-sysvinit-script.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,15 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 874eabfaa1..e337f4cf8e 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -601,10 +601,6 @@ install(PROGRAMS + ${CMAKE_SOURCE_DIR}/src/ceph-run + ${CMAKE_SOURCE_DIR}/src/ceph-clsinfo + DESTINATION bin) +-install(PROGRAMS +- ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/init-ceph +- DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/init.d +- RENAME ceph) + + install(FILES + ${CMAKE_SOURCE_DIR}/share/id_rsa_drop.ceph.com Copied: ceph/repos/community-staging-x86_64/ceph-14.2.0-cflags.patch (from rev 1059267, ceph/trunk/ceph-14.2.0-cflags.patch) =================================================================== --- community-staging-x86_64/ceph-14.2.0-cflags.patch (rev 0) +++ community-staging-x86_64/ceph-14.2.0-cflags.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,13 @@ +diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake +index 5697dff85f..7fdcfe4112 100644 +--- a/cmake/modules/Distutils.cmake ++++ b/cmake/modules/Distutils.cmake +@@ -61,7 +61,7 @@ function(distutils_add_cython_module name src) + CC="${PY_CC}" + CXX="${PY_CXX}" + LDSHARED="${PY_LDSHARED}" +- OPT=\"-DNDEBUG -g -fwrapv -O2 -w\" ++ OPT=\"-DNDEBUG -g -fwrapv -w\" + LDFLAGS=-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR} + CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} Copied: ceph/repos/community-staging-x86_64/ceph-14.2.0-cython-0.29.patch (from rev 1059267, ceph/trunk/ceph-14.2.0-cython-0.29.patch) =================================================================== --- community-staging-x86_64/ceph-14.2.0-cython-0.29.patch (rev 0) +++ community-staging-x86_64/ceph-14.2.0-cython-0.29.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,17 @@ +--- ceph-13.2.1/cmake/modules/Distutils.cmake.old 2018-07-26 17:39:56.000000000 -0000 ++++ ceph-13.2.1/cmake/modules/Distutils.cmake 2018-12-24 05:43:51.566174070 -0000 +@@ -58,8 +62,13 @@ + function(distutils_install_cython_module name) + get_property(compiler_launcher GLOBAL PROPERTY RULE_LAUNCH_COMPILE) + get_property(link_launcher GLOBAL PROPERTY RULE_LAUNCH_LINK) +- set(PY_CC "${compiler_launcher} ${CMAKE_C_COMPILER}") ++ string(REPLACE " " ";" cflags ${CMAKE_C_FLAGS}) ++ list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w) ++ list(APPEND cflags -D'void0=dead_function\(void\)') ++ list(APPEND cflags -D'__Pyx_check_single_interpreter\(ARG\)=ARG \#\# 0') ++ string(REPLACE ";" " " cflags "${cflags}") ++ set(PY_CC "${compiler_launcher} ${CMAKE_C_COMPILER} ${cflags}") + set(PY_LDSHARED "${link_launcher} ${CMAKE_C_COMPILER} -shared") + install(CODE " + set(ENV{CC} \"${PY_CC}\") + set(ENV{LDSHARED} \"${PY_LDSHARED}\") Copied: ceph/repos/community-staging-x86_64/ceph-14.2.0-link-crc32-statically.patch (from rev 1059267, ceph/trunk/ceph-14.2.0-link-crc32-statically.patch) =================================================================== --- community-staging-x86_64/ceph-14.2.0-link-crc32-statically.patch (rev 0) +++ community-staging-x86_64/ceph-14.2.0-link-crc32-statically.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,11 @@ +--- ceph-14.2.0.orig/src/common/CMakeLists.txt 2019-03-18 04:08:29.000000000 -0600 ++++ ceph-14.2.0/src/common/CMakeLists.txt 2019-03-21 18:42:32.903182824 -0600 +@@ -165,7 +165,7 @@ + crc32c_aarch64.c) + endif(HAVE_INTEL) + +-add_library(crc32 ${crc32_srcs}) ++add_library(crc32 STATIC ${crc32_srcs}) + if(HAVE_ARMV8_CRC) + set_target_properties(crc32 PROPERTIES + COMPILE_FLAGS "${CMAKE_C_FLAGS} ${ARMV8_CRC_COMPILE_FLAGS}") Copied: ceph/repos/community-staging-x86_64/ceph-15.2.0-rocksdb-cmake.patch (from rev 1059267, ceph/trunk/ceph-15.2.0-rocksdb-cmake.patch) =================================================================== --- community-staging-x86_64/ceph-15.2.0-rocksdb-cmake.patch (rev 0) +++ community-staging-x86_64/ceph-15.2.0-rocksdb-cmake.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,15 @@ +diff --git a/cmake/modules/BuildRocksDB.cmake b/cmake/modules/BuildRocksDB.cmake +index de9748878b..4b86b36d35 100644 +--- a/cmake/modules/BuildRocksDB.cmake ++++ b/cmake/modules/BuildRocksDB.cmake +@@ -6,10 +6,6 @@ function(build_rocksdb) + # CMAKE_PREFIX_PATH, for which reason we'll have to use some other separator. + string(REPLACE ";" "!" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}") + list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}) +- if(CMAKE_TOOLCHAIN_FILE) +- list(APPEND rocksdb_CMAKE_ARGS +- -DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE) +- endif() + + if(ALLOCATOR STREQUAL "jemalloc") + list(APPEND rocksdb_CMAKE_ARGS -DWITH_JEMALLOC=ON) Copied: ceph/repos/community-staging-x86_64/ceph-15.2.4-system-uring.patch (from rev 1059267, ceph/trunk/ceph-15.2.4-system-uring.patch) =================================================================== --- community-staging-x86_64/ceph-15.2.4-system-uring.patch (rev 0) +++ community-staging-x86_64/ceph-15.2.4-system-uring.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,66 @@ +diff --git a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt +index 760244b9b4..7f83923671 100644 +--- a/src/os/CMakeLists.txt ++++ b/src/os/CMakeLists.txt +@@ -134,27 +134,6 @@ if(WITH_EVENTTRACE) + endif() + + if(WITH_LIBURING) +- include(ExternalProject) +- if("${CMAKE_GENERATOR}" MATCHES "Make") +- set(make_cmd "$(MAKE)") +- else() +- set(make_cmd "make") +- endif() +- ExternalProject_Add(liburing_ext +- DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/src/ +- GIT_REPOSITORY http://git.kernel.dk/liburing +- GIT_TAG "4e360f71131918c36774f51688e5c65dea8d43f2" +- SOURCE_DIR ${CMAKE_BINARY_DIR}/src/liburing +- CONFIGURE_COMMAND <SOURCE_DIR>/configure +- BUILD_COMMAND env CC=${CMAKE_C_COMPILER} ${make_cmd} -C src -s +- BUILD_IN_SOURCE 1 +- INSTALL_COMMAND "") +- unset(make_cmd) +- add_library(liburing STATIC IMPORTED GLOBAL) +- add_dependencies(liburing liburing_ext) +- set_target_properties(liburing PROPERTIES +- IMPORTED_LINK_INTERFACE_LANGUAGES "C" +- IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/src/liburing/src/liburing.a") +- target_link_libraries(os liburing) +- target_include_directories(os SYSTEM PRIVATE "${CMAKE_BINARY_DIR}/src/liburing/src/include") ++ pkg_check_modules(LIBURING REQUIRED IMPORTED_TARGET liburing) ++ target_link_libraries(os uring) + endif(WITH_LIBURING) +diff --git a/src/os/bluestore/io_uring.cc b/src/os/bluestore/io_uring.cc +index 54fa0f9535..4ba83cf172 100644 +--- a/src/os/bluestore/io_uring.cc ++++ b/src/os/bluestore/io_uring.cc +@@ -7,6 +7,8 @@ + + #include "liburing.h" + #include <sys/epoll.h> ++#include <unistd.h> ++#include <sys/syscall.h> + + /* Options */ + +@@ -134,8 +136,7 @@ int ioring_queue_t::init(std::vector<int> &fds) + if (ret < 0) + return ret; + +- ret = io_uring_register(d->io_uring.ring_fd, IORING_REGISTER_FILES, +- &fds[0], fds.size()); ++ ret = io_uring_register_files(&d->io_uring, &fds[0], fds.size()); + if (ret < 0) { + ret = -errno; + goto close_ring_fd; +@@ -214,7 +215,7 @@ bool ioring_queue_t::supported() + struct io_uring_params p; + + memset(&p, 0, sizeof(p)); +- int fd = io_uring_setup(16, &p); ++ int fd = syscall(SYS_io_uring_setup, 16, &p); + if (fd < 0) + return false; + Copied: ceph/repos/community-staging-x86_64/ceph-15.2.5-missing-includes.patch (from rev 1059267, ceph/trunk/ceph-15.2.5-missing-includes.patch) =================================================================== --- community-staging-x86_64/ceph-15.2.5-missing-includes.patch (rev 0) +++ community-staging-x86_64/ceph-15.2.5-missing-includes.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,12 @@ +diff --git a/src/tools/rbd/action/Bench.cc b/src/tools/rbd/action/Bench.cc +index aa6edbc18b..90c551c179 100644 +--- a/src/tools/rbd/action/Bench.cc ++++ b/src/tools/rbd/action/Bench.cc +@@ -9,6 +9,7 @@ + #include "common/ceph_mutex.h" + #include "include/types.h" + #include "global/signal_handler.h" ++#include <atomic> + #include <iostream> + #include <boost/accumulators/accumulators.hpp> + #include <boost/accumulators/statistics/stats.hpp> Copied: ceph/repos/community-staging-x86_64/ceph.sysusers (from rev 1059267, ceph/trunk/ceph.sysusers) =================================================================== --- community-staging-x86_64/ceph.sysusers (rev 0) +++ community-staging-x86_64/ceph.sysusers 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1 @@ +u ceph 340 - /run/ceph Copied: ceph/repos/community-staging-x86_64/disable-broken-mgr-dashboard-test.patch (from rev 1059267, ceph/trunk/disable-broken-mgr-dashboard-test.patch) =================================================================== --- community-staging-x86_64/disable-broken-mgr-dashboard-test.patch (rev 0) +++ community-staging-x86_64/disable-broken-mgr-dashboard-test.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,13 @@ +--- a/src/test/CMakeLists.txt 2019-12-06 17:42:34.000000000 +0100 ++++ b/src/test/CMakeLists.txt 2020-01-04 09:55:50.703888545 +0100 +@@ -555,8 +555,8 @@ set(env_vars_for_tox_tests + WITH_PYTHON3=${WITH_PYTHON3}) + + if(WITH_MGR) +- add_test(NAME run-tox-mgr-dashboard COMMAND bash ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/run-tox.sh) +- list(APPEND tox_tests run-tox-mgr-dashboard) ++ # add_test(NAME run-tox-mgr-dashboard COMMAND bash ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/run-tox.sh) ++ # list(APPEND tox_tests run-tox-mgr-dashboard) + set(MGR_DASHBOARD_VIRTUALENV ${CEPH_BUILD_VIRTUALENV}/mgr-dashboard-virtualenv) + list(APPEND env_vars_for_tox_tests MGR_DASHBOARD_VIRTUALENV=${MGR_DASHBOARD_VIRTUALENV}) + Copied: ceph/repos/community-staging-x86_64/disable-empty-readable.sh-test.patch (from rev 1059267, ceph/trunk/disable-empty-readable.sh-test.patch) =================================================================== --- community-staging-x86_64/disable-empty-readable.sh-test.patch (rev 0) +++ community-staging-x86_64/disable-empty-readable.sh-test.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,6 @@ +--- a/src/test/encoding/CMakeLists.txt 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/test/encoding/CMakeLists.txt 2019-07-14 21:11:37.380428899 +0200 +@@ -1,3 +1,2 @@ + # scripts + add_ceph_test(check-generated.sh ${CMAKE_CURRENT_SOURCE_DIR}/check-generated.sh) +-add_ceph_test(readable.sh ${CMAKE_CURRENT_SOURCE_DIR}/readable.sh) Copied: ceph/repos/community-staging-x86_64/exclude-frontend-from-mgr-dashboard-cov.patch (from rev 1059267, ceph/trunk/exclude-frontend-from-mgr-dashboard-cov.patch) =================================================================== --- community-staging-x86_64/exclude-frontend-from-mgr-dashboard-cov.patch (rev 0) +++ community-staging-x86_64/exclude-frontend-from-mgr-dashboard-cov.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,11 @@ +--- a/src/pybind/mgr/dashboard/tox.ini 2019-12-06 17:42:34.000000000 +0100 ++++ c/src/pybind/mgr/dashboard/tox.ini 2020-01-03 15:25:30.074706391 +0100 +@@ -20,7 +20,7 @@ commands= + py27: pip install -r {toxinidir}/requirements-py27.txt + py3: pip install -r {toxinidir}/requirements-py3.txt + cov: coverage erase +- cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --doctest-modules controllers services/ tests/ tools.py ++ cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --ignore=frontend/ --doctest-modules controllers services/ tests/ tools.py + cov: coverage combine {toxinidir}/{env:COVERAGE_FILE} + cov: coverage report + cov: coverage xml Copied: ceph/repos/community-staging-x86_64/fix-ceph_disk-python-interpreter.patch (from rev 1059267, ceph/trunk/fix-ceph_disk-python-interpreter.patch) =================================================================== --- community-staging-x86_64/fix-ceph_disk-python-interpreter.patch (rev 0) +++ community-staging-x86_64/fix-ceph_disk-python-interpreter.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,8 @@ +--- a/src/ceph-disk/ceph_disk/main.py 2017-08-28 18:30:20.000000000 +0200 ++++ b/src/ceph-disk/ceph_disk/main.py 2017-09-21 13:50:39.373573382 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python2 + # + # Copyright (C) 2015, 2016, 2017 Red Hat <cont...@redhat.com> + # Copyright (C) 2014 Inktank <i...@inktank.com> Copied: ceph/repos/community-staging-x86_64/fix-mgr-dashboard-frontend-unittests-dist-stuff.patch (from rev 1059267, ceph/trunk/fix-mgr-dashboard-frontend-unittests-dist-stuff.patch) =================================================================== --- community-staging-x86_64/fix-mgr-dashboard-frontend-unittests-dist-stuff.patch (rev 0) +++ community-staging-x86_64/fix-mgr-dashboard-frontend-unittests-dist-stuff.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,50 @@ +--- a/src/pybind/mgr/dashboard/run-frontend-unittests.sh 2020-01-08 19:36:54.000000000 +0100 ++++ b/src/pybind/mgr/dashboard/run-frontend-unittests.sh 2020-01-10 15:18:39.646510326 +0100 +@@ -8,7 +8,7 @@ if [ `uname` != "FreeBSD" ]; then + fi + + # Build +-npm run build -- --prod --progress=false || failed=true ++#npm run build -- --prod --progress=false || failed=true + + # Unit Tests + config='src/unit-test-configuration.ts' +@@ -25,22 +25,22 @@ if [ -e ${config}_old ]; then + fi + + # Linting +-npm run lint --silent +-if [ $? -gt 0 ]; then +- failed=true +- echo -e "\nTry running 'npm run fix' to fix some linting errors. \ +-Some errors might need a manual fix." +-fi +- +-# I18N +-npm run i18n:extract +-i18n_lint=`awk '/<source> |<source>$| <\/source>/,/<\/context-group>/ {printf "%-4s ", NR; print}' src/locale/messages.xlf` +-if [[ ! -z $i18n_lint ]]; then +- echo -e "The following source translations in 'messages.xlf' need to be \ +-fixed, please check the I18N suggestions in 'HACKING.rst':\n" +- echo "${i18n_lint}" +- failed=true +-fi ++# npm run lint --silent ++# if [ $? -gt 0 ]; then ++# failed=true ++# echo -e "\nTry running 'npm run fix' to fix some linting errors. \ ++# Some errors might need a manual fix." ++# fi ++# ++# # I18N ++# npm run i18n:extract ++# i18n_lint=`awk '/<source> |<source>$| <\/source>/,/<\/context-group>/ {printf "%-4s ", NR; print}' src/locale/messages.xlf` ++# if [[ ! -z $i18n_lint ]]; then ++# echo -e "The following source translations in 'messages.xlf' need to be \ ++# fixed, please check the I18N suggestions in 'HACKING.rst':\n" ++# echo "${i18n_lint}" ++# failed=true ++# fi + + if [ `uname` != "FreeBSD" ]; then + deactivate Copied: ceph/repos/community-staging-x86_64/fix-mgr-dashboard-partial_dict.patch (from rev 1059267, ceph/trunk/fix-mgr-dashboard-partial_dict.patch) =================================================================== --- community-staging-x86_64/fix-mgr-dashboard-partial_dict.patch (rev 0) +++ community-staging-x86_64/fix-mgr-dashboard-partial_dict.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,18 @@ +--- a/src/pybind/mgr/dashboard/controllers/health.py 2020-11-17 19:12:53.000000000 +0100 ++++ b/src/pybind/mgr/dashboard/controllers/health.py 2020-11-22 22:13:44.115751086 +0100 +@@ -11,10 +11,14 @@ + from ..services.ceph_service import CephService + from ..services.iscsi_cli import IscsiGatewaysConfig + from ..services.iscsi_client import IscsiClient +-from ..tools import partial_dict ++#from ..tools import partial_dict + from .host import get_hosts + + ++def partial_dict(orig, keys): ++ return {k: orig[k] for k in keys} ++ ++ + class HealthData(object): + """ + A class to be used in combination with BaseController to allow either Copied: ceph/repos/community-staging-x86_64/fix-python2-paths.patch (from rev 1059267, ceph/trunk/fix-python2-paths.patch) =================================================================== --- community-staging-x86_64/fix-python2-paths.patch (rev 0) +++ community-staging-x86_64/fix-python2-paths.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,52 @@ +--- a/CMakeLists.txt 2018-05-29 14:04:02.000000000 +0200 ++++ b/CMakeLists.txt 2018-06-04 13:41:55.684455580 +0200 +@@ -49,7 +49,7 @@ endif(WITH_CCACHE) + option(WITH_MANPAGE "Build man pages." ON) + if(WITH_MANPAGE) + find_program(SPHINX_BUILD +- sphinx-build) ++ sphinx-build2) + if(NOT SPHINX_BUILD) + message(FATAL_ERROR "Can't find sphinx-build.") + endif(NOT SPHINX_BUILD) +--- a/src/tools/setup-virtualenv.sh 2018-05-29 14:04:02.000000000 +0200 ++++ b/src/tools/setup-virtualenv.sh 2018-06-04 13:43:24.767175961 +0200 +@@ -58,10 +58,10 @@ if [ -z "$DIR" ] ; then + fi + rm -fr $DIR + mkdir -p $DIR +-virtualenv --python $PYTHON_BINARY $DIR ++virtualenv2 --python $PYTHON_BINARY $DIR + . $DIR/bin/activate + +-if pip --help | grep -q disable-pip-version-check; then ++if pip2 --help | grep -q disable-pip-version-check; then + DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check + else + DISABLE_PIP_VERSION_CHECK= +@@ -69,12 +69,12 @@ fi + + # older versions of pip will not install wrap_console scripts + # when using wheel packages +-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1' ++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1' + + # workaround of https://github.com/pypa/setuptools/issues/1042 +-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade "setuptools < 36" ++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade "setuptools < 36" + +-if pip --help | grep -q disable-pip-version-check; then ++if pip2 --help | grep -q disable-pip-version-check; then + DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check + else + DISABLE_PIP_VERSION_CHECK= +@@ -84,7 +84,7 @@ if test -d wheelhouse ; then + export NO_INDEX=--no-index + fi + +-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse 'tox >=2.9.1' ++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse 'tox >=2.9.1' + if test -f requirements.txt ; then +- pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse -r requirements.txt ++ pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse -r requirements.txt + fi Copied: ceph/repos/community-staging-x86_64/fix-tox-test-commands.patch (from rev 1059267, ceph/trunk/fix-tox-test-commands.patch) =================================================================== --- community-staging-x86_64/fix-tox-test-commands.patch (rev 0) +++ community-staging-x86_64/fix-tox-test-commands.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,160 @@ +--- a/src/pybind/mgr/ansible/run-tox.sh 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/pybind/mgr/ansible/run-tox.sh 2019-07-14 16:36:54.220654727 +0200 +@@ -8,22 +8,22 @@ + test -d ansible && cd ansible + + if [ -e tox.ini ]; then +- TOX_PATH=$(readlink -f tox.ini) ++ TOX_PATH="$(readlink -f tox.ini)" + else +- TOX_PATH=$(readlink -f $(dirname $0)/tox.ini) ++ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)" + fi + + # tox.ini will take care of this. + unset PYTHONPATH + export CEPH_BUILD_DIR=$CEPH_BUILD_DIR + +-source ${MGR_ANSIBLE_VIRTUALENV}/bin/activate ++source "${MGR_ANSIBLE_VIRTUALENV}"/bin/activate + + if [ "$WITH_PYTHON2" = "ON" ]; then + ENV_LIST+="py27" + fi +-if [ "$WITH_PYTHON3" = "ON" ]; then ++if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then + ENV_LIST+="py3" + fi + +-tox -c ${TOX_PATH} -e ${ENV_LIST} ++tox -c "${TOX_PATH}" -e "${ENV_LIST}" +--- a/src/pybind/mgr/dashboard/run-tox.sh 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/pybind/mgr/dashboard/run-tox.sh 2019-07-14 16:36:48.907269344 +0200 +@@ -8,30 +8,30 @@ + test -d dashboard && cd dashboard + + if [ -e tox.ini ]; then +- TOX_PATH=`readlink -f tox.ini` ++ TOX_PATH="$(readlink -f tox.ini)" + else +- TOX_PATH=`readlink -f $(dirname $0)/tox.ini` ++ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)" + fi + + # tox.ini will take care of this. + unset PYTHONPATH + export CEPH_BUILD_DIR=$CEPH_BUILD_DIR + +-source ${MGR_DASHBOARD_VIRTUALENV}/bin/activate ++source "${MGR_DASHBOARD_VIRTUALENV}"/bin/activate + +-if [ "$WITH_PYTHON2" = "ON" ]; then +- if [[ -n "$@" ]]; then ++if [ "$WITH_PYTHON2" == "ON" ]; then ++ if [[ -n "$*" ]]; then + ENV_LIST+="py27-run," + else + ENV_LIST+="py27-cov,py27-lint," + fi + fi +-if [ "$WITH_PYTHON3" = "ON" ]; then +- if [[ -n "$@" ]]; then ++if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then ++ if [[ -n "$*" ]]; then + ENV_LIST+="py3-run" + else + ENV_LIST+="py3-cov,py3-lint" + fi + fi + +-tox -c ${TOX_PATH} -e "$ENV_LIST" "$@" ++tox -c "${TOX_PATH}" -e "$ENV_LIST" "$@" +--- a/src/pybind/mgr/insights/run-tox.sh 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/pybind/mgr/insights/run-tox.sh 2019-07-14 16:36:41.347195419 +0200 +@@ -8,22 +8,22 @@ + test -d insights && cd insights + + if [ -e tox.ini ]; then +- TOX_PATH=`readlink -f tox.ini` ++ TOX_PATH="$(readlink -f tox.ini)" + else +- TOX_PATH=`readlink -f $(dirname $0)/tox.ini` ++ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)" + fi + + # tox.ini will take care of this. + unset PYTHONPATH + export CEPH_BUILD_DIR=$CEPH_BUILD_DIR + +-source ${MGR_INSIGHTS_VIRTUALENV}/bin/activate ++source "${MGR_INSIGHTS_VIRTUALENV}"/bin/activate + + if [ "$WITH_PYTHON2" = "ON" ]; then + ENV_LIST+="py27" + fi +-if [ "$WITH_PYTHON3" = "ON" ]; then ++if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then + ENV_LIST+="py3" + fi + +-tox -c ${TOX_PATH} -e ${ENV_LIST} ++tox -c "${TOX_PATH}" -e "${ENV_LIST}" +--- a/src/pybind/mgr/orchestrator_cli/run-tox.sh 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/pybind/mgr/orchestrator_cli/run-tox.sh 2019-07-14 16:37:01.734061798 +0200 +@@ -8,25 +8,24 @@ + test -d orchestrator_cli && cd orchestrator_cli + + if [ -e tox.ini ]; then +- TOX_PATH=$(readlink -f tox.ini) ++ TOX_PATH="$(readlink -f tox.ini)" + else +- TOX_PATH=$(readlink -f $(dirname $0)/tox.ini) ++ TOX_PATH="$(readlink -f "$(dirname "$0")"/tox.ini)" + fi + + # tox.ini will take care of this. + unset PYTHONPATH + export CEPH_BUILD_DIR=$CEPH_BUILD_DIR + +-if [ -f ${MGR_ORCHESTRATOR_CLI_VIRTUALENV}/bin/activate ] +-then +- source ${MGR_ORCHESTRATOR_CLI_VIRTUALENV}/bin/activate ++if [[ -r "${MGR_ORCHESTRATOR_CLI_VIRTUALENV}"/bin/activate ]]; then ++ source "${MGR_ORCHESTRATOR_CLI_VIRTUALENV}"/bin/activate + fi + + if [ "$WITH_PYTHON2" = "ON" ]; then + ENV_LIST+="py27" + fi +-if [ "$WITH_PYTHON3" = "ON" ]; then +- ENV_LIST+=",py3" ++if [[ "$WITH_PYTHON3" == "ON" || "$WITH_PYTHON3" == "3" ]]; then ++ ENV_LIST+="py3" + fi + +-tox -c ${TOX_PATH} -e ${ENV_LIST} ++tox -c "${TOX_PATH}" -e "${ENV_LIST}" +--- a/src/pybind/mgr/dashboard/tox.ini 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/pybind/mgr/dashboard/tox.ini 2019-07-15 12:36:39.693948289 +0200 +@@ -1,5 +1,5 @@ + [tox] +-envlist = py27-{cov,lint,run},py3-{cov,lint,run} ++envlist = py3-{cov,lint,run} + skipsdist = true + toxworkdir = {env:CEPH_BUILD_DIR}/dashboard + minversion = 2.8.1 +@@ -11,13 +11,12 @@ setenv= + WEBTEST_INTERACTIVE = false + LD_LIBRARY_PATH = {toxinidir}/../../../../build/lib + PATH = {toxinidir}/../../../../build/bin:$PATH +- py27: PYTHONPATH = {toxinidir}/../../../../build/lib/cython_modules/lib.2 + py3: PYTHONPATH = {toxinidir}/../../../../build/lib/cython_modules/lib.3 + cov: UNITTEST = true + cov: COVERAGE_FILE = .coverage.{envname} + commands= + pip install -r {toxinidir}/requirements.txt +- py27: pip install -r {toxinidir}/requirements-py27.txt ++; py27: pip install -r {toxinidir}/requirements-py27.txt + py3: pip install -r {toxinidir}/requirements-py3.txt + cov: coverage erase + cov: {envbindir}/py.test --cov=. --cov-report= --junitxml=junit.{envname}.xml --doctest-modules controllers/rbd.py services/ tests/ tools.py Copied: ceph/repos/community-staging-x86_64/fix_snappy_namespace_uint.patch (from rev 1059267, ceph/trunk/fix_snappy_namespace_uint.patch) =================================================================== --- community-staging-x86_64/fix_snappy_namespace_uint.patch (rev 0) +++ community-staging-x86_64/fix_snappy_namespace_uint.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,12 @@ +diff -upr a/src/compressor/snappy/SnappyCompressor.h b/src/compressor/snappy/SnappyCompressor.h +--- a/src/compressor/snappy/SnappyCompressor.h 2021-08-05 19:11:54.000000000 +0200 ++++ b/src/compressor/snappy/SnappyCompressor.h 2021-09-01 17:38:35.488609568 +0200 +@@ -96,7 +96,7 @@ class SnappyCompressor : public Compress + if (qat_enabled) + return qat_accel.decompress(p, compressed_len, dst); + #endif +- snappy::uint32 res_len = 0; ++ std::uint32_t res_len = 0; + BufferlistSource source_1(p, compressed_len); + if (!snappy::GetUncompressedLength(&source_1, &res_len)) { + return -1; Copied: ceph/repos/community-staging-x86_64/glibc2.32-strsignal-compat-backported.patch (from rev 1059267, ceph/trunk/glibc2.32-strsignal-compat-backported.patch) =================================================================== --- community-staging-x86_64/glibc2.32-strsignal-compat-backported.patch (rev 0) +++ community-staging-x86_64/glibc2.32-strsignal-compat-backported.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,63 @@ +From b9b6faf66ae67648626470cb4fc3f0850ac4d842 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Tue, 1 Sep 2020 13:49:21 +0200 +Subject: [PATCH] cmake: detect and use sigdescr_np() if available + +sys_siglist is deprecated with glibc 2.32. A new thread-safe and +async-signal safe sigdescr_np() function is provided, so use it if +available. + +Fixes: https://tracker.ceph.com/issues/47187 +Signed-off-by: David Disseldorp <dd...@suse.de> +--- + cmake/modules/CephChecks.cmake | 1 + + src/global/signal_handler.h | 8 +++++--- + src/include/config-h.in.cmake | 3 +++ + 3 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/cmake/modules/CephChecks.cmake b/cmake/modules/CephChecks.cmake +index 23687283a7c6..ca86dcbc73de 100644 +--- a/cmake/modules/CephChecks.cmake ++++ b/cmake/modules/CephChecks.cmake +@@ -24,6 +24,7 @@ check_function_exists(strerror_r HAVE_Strerror_R) + check_function_exists(name_to_handle_at HAVE_NAME_TO_HANDLE_AT) + check_function_exists(pipe2 HAVE_PIPE2) + check_function_exists(accept4 HAVE_ACCEPT4) ++check_function_exists(sigdescr_np HAVE_SIGDESCR_NP) + + include(CMakePushCheckState) + cmake_push_check_state(RESET) +diff --git a/src/global/signal_handler.h b/src/global/signal_handler.h +index 476724201aa9..c101b2e28733 100644 +--- a/src/global/signal_handler.h ++++ b/src/global/signal_handler.h +@@ -20,10 +20,12 @@ + + typedef void (*signal_handler_t)(int); + +-#ifndef HAVE_REENTRANT_STRSIGNAL +-# define sig_str(signum) sys_siglist[signum] +-#else ++#ifdef HAVE_SIGDESCR_NP ++# define sig_str(signum) sigdescr_np(signum) ++#elif HAVE_REENTRANT_STRSIGNAL + # define sig_str(signum) strsignal(signum) ++#else ++# define sig_str(signum) sys_siglist[signum] + #endif + + void install_sighandler(int signum, signal_handler_t handler, int flags); +diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake +index 1ea3703f620c..59bd4273511a 100644 +--- a/src/include/config-h.in.cmake ++++ b/src/include/config-h.in.cmake +@@ -220,6 +220,9 @@ + /* Define to 1 if you have sched.h. */ + #cmakedefine HAVE_SCHED 1 + ++/* Define to 1 if you have sigdescr_np. */ ++#cmakedefine HAVE_SIGDESCR_NP 1 ++ + /* Support SSE (Streaming SIMD Extensions) instructions */ + #cmakedefine HAVE_SSE + Copied: ceph/repos/community-staging-x86_64/mgr-dashboard-update-pylint-to-2.6.0.patch (from rev 1059267, ceph/trunk/mgr-dashboard-update-pylint-to-2.6.0.patch) =================================================================== --- community-staging-x86_64/mgr-dashboard-update-pylint-to-2.6.0.patch (rev 0) +++ community-staging-x86_64/mgr-dashboard-update-pylint-to-2.6.0.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,671 @@ +From e4f179fa960ed18e8f45bc87d26552d720bc819b Mon Sep 17 00:00:00 2001 +From: Volker Theile <vthe...@suse.com> +Date: Fri, 25 Sep 2020 13:17:19 +0200 +Subject: [PATCH] mgr/dashboard: update pylint to 2.6.0 + +* Update pylint to 2.6.0. +* Fix pylint issues. + +Fixes: https://tracker.ceph.com/issues/47647 + +(cherry picked from commit 298c91958a41674a928d53f010b20f174f16d68f) +--- + src/pybind/mgr/dashboard/.pylintrc | 8 ++++++-- + .../mgr/dashboard/controllers/nfsganesha.py | 2 +- + src/pybind/mgr/dashboard/controllers/osd.py | 2 +- + src/pybind/mgr/dashboard/plugins/__init__.py | 2 +- + .../mgr/dashboard/requirements-lint.txt | 2 +- + src/pybind/mgr/dashboard/services/auth.py | 1 - + .../mgr/dashboard/services/ceph_service.py | 2 +- + src/pybind/mgr/dashboard/services/cephx.py | 2 +- + src/pybind/mgr/dashboard/services/ganesha.py | 20 +++++++++---------- + .../mgr/dashboard/services/iscsi_client.py | 2 +- + .../mgr/dashboard/services/iscsi_config.py | 2 +- + src/pybind/mgr/dashboard/services/progress.py | 2 +- + .../mgr/dashboard/services/rgw_client.py | 3 ++- + src/pybind/mgr/dashboard/tests/__init__.py | 2 +- + src/pybind/mgr/dashboard/tests/helper.py | 2 +- + .../dashboard/tests/test_access_control.py | 2 +- + .../mgr/dashboard/tests/test_api_auditing.py | 2 +- + src/pybind/mgr/dashboard/tests/test_cephfs.py | 2 +- + .../mgr/dashboard/tests/test_controllers.py | 2 +- + src/pybind/mgr/dashboard/tests/test_docs.py | 2 +- + .../tests/test_erasure_code_profile.py | 2 +- + .../mgr/dashboard/tests/test_exceptions.py | 2 +- + .../dashboard/tests/test_feature_toggles.py | 2 +- + .../mgr/dashboard/tests/test_ganesha.py | 2 +- + .../mgr/dashboard/tests/test_grafana.py | 2 +- + src/pybind/mgr/dashboard/tests/test_home.py | 2 +- + src/pybind/mgr/dashboard/tests/test_host.py | 2 +- + src/pybind/mgr/dashboard/tests/test_iscsi.py | 3 ++- + .../mgr/dashboard/tests/test_orchestrator.py | 2 +- + src/pybind/mgr/dashboard/tests/test_osd.py | 4 ++-- + .../mgr/dashboard/tests/test_plugin_debug.py | 2 +- + src/pybind/mgr/dashboard/tests/test_pool.py | 2 +- + .../mgr/dashboard/tests/test_prometheus.py | 2 +- + .../mgr/dashboard/tests/test_rbd_mirroring.py | 2 +- + .../mgr/dashboard/tests/test_rest_tasks.py | 2 +- + src/pybind/mgr/dashboard/tests/test_rgw.py | 2 +- + .../mgr/dashboard/tests/test_rgw_client.py | 2 +- + .../mgr/dashboard/tests/test_settings.py | 2 +- + src/pybind/mgr/dashboard/tests/test_sso.py | 3 ++- + src/pybind/mgr/dashboard/tests/test_tools.py | 2 +- + src/pybind/mgr/dashboard/tools.py | 2 +- + 41 files changed, 58 insertions(+), 52 deletions(-) + +diff --git a/src/pybind/mgr/dashboard/.pylintrc b/src/pybind/mgr/dashboard/.pylintrc +index 404a16a2e6..c4bf033cda 100644 +--- a/src/pybind/mgr/dashboard/.pylintrc ++++ b/src/pybind/mgr/dashboard/.pylintrc +@@ -15,7 +15,7 @@ ignore-patterns= + + # Python code to execute, usually for sys.path manipulation such as + # pygtk.require(). +-#init-hook= ++init-hook='import sys; sys.path.append("./")' + + # Use multiple processes to speed up Pylint. + jobs=1 +@@ -118,7 +118,11 @@ disable=import-star-module-level, + too-many-arguments, + too-many-locals, + too-many-statements, +- useless-object-inheritance ++ useless-object-inheritance, ++ relative-beyond-top-level, ++ raise-missing-from, ++ super-with-arguments, ++ import-outside-toplevel + + + # Enable the message, report, category or checker with the given id(s). You can +diff --git a/src/pybind/mgr/dashboard/controllers/nfsganesha.py b/src/pybind/mgr/dashboard/controllers/nfsganesha.py +index 1219f78b95..510b37a712 100644 +--- a/src/pybind/mgr/dashboard/controllers/nfsganesha.py ++++ b/src/pybind/mgr/dashboard/controllers/nfsganesha.py +@@ -272,7 +272,7 @@ class NFSGaneshaService(RESTController): + class NFSGaneshaUi(BaseController): + @Endpoint('GET', '/cephx/clients') + def cephx_clients(self): +- return [client for client in CephX.list_clients()] ++ return list(CephX.list_clients()) + + @Endpoint('GET', '/fsals') + def fsals(self): +diff --git a/src/pybind/mgr/dashboard/controllers/osd.py b/src/pybind/mgr/dashboard/controllers/osd.py +index 2731ad0ffc..f95951cba2 100644 +--- a/src/pybind/mgr/dashboard/controllers/osd.py ++++ b/src/pybind/mgr/dashboard/controllers/osd.py +@@ -272,7 +272,7 @@ class Osd(RESTController): + + @CreatePermission + @osd_task('create', {'tracking_id': '{tracking_id}'}) +- def create(self, method, data, tracking_id): # pylint: disable=W0622 ++ def create(self, method, data, tracking_id): # pylint: disable=unused-argument + if method == 'bare': + return self._create_bare(data) + if method == 'drive_groups': +diff --git a/src/pybind/mgr/dashboard/plugins/__init__.py b/src/pybind/mgr/dashboard/plugins/__init__.py +index 8973654770..3e3aca4001 100644 +--- a/src/pybind/mgr/dashboard/plugins/__init__.py ++++ b/src/pybind/mgr/dashboard/plugins/__init__.py +@@ -71,4 +71,4 @@ class DashboardPluginManager(object): + PLUGIN_MANAGER = DashboardPluginManager("ceph-mgr.dashboard") + + # Load all interfaces and their hooks +-from . import interfaces # noqa: F401 pylint: disable=wrong-import-position,cyclic-import ++from . import interfaces # noqa pylint: disable=C0413,W0406 +diff --git a/src/pybind/mgr/dashboard/requirements-lint.txt b/src/pybind/mgr/dashboard/requirements-lint.txt +index 8f68ad3856..f01fa54e6e 100644 +--- a/src/pybind/mgr/dashboard/requirements-lint.txt ++++ b/src/pybind/mgr/dashboard/requirements-lint.txt +@@ -1,4 +1,4 @@ +-pylint==2.3.1; python_version >= '3' ++pylint==2.6.0 + flake8==3.7.8; python_version >= '3' + flake8-colors==0.1.6; python_version >= '3' + #TODO: Fix docstring issues: https://tracker.ceph.com/issues/41224 +diff --git a/src/pybind/mgr/dashboard/services/auth.py b/src/pybind/mgr/dashboard/services/auth.py +index d829362e63..475d501263 100644 +--- a/src/pybind/mgr/dashboard/services/auth.py ++++ b/src/pybind/mgr/dashboard/services/auth.py +@@ -177,7 +177,6 @@ class AuthManagerTool(cherrypy.Tool): + + def _check_authorization(self, username): + self.logger.debug("checking authorization...") +- username = username + handler = cherrypy.request.handler.callable + controller = handler.__self__ + sec_scope = getattr(controller, '_security_scope', None) +diff --git a/src/pybind/mgr/dashboard/services/ceph_service.py b/src/pybind/mgr/dashboard/services/ceph_service.py +index a6eee2957e..89582e3f73 100644 +--- a/src/pybind/mgr/dashboard/services/ceph_service.py ++++ b/src/pybind/mgr/dashboard/services/ceph_service.py +@@ -12,7 +12,7 @@ from .. import mgr + from ..exceptions import DashboardException + + try: +- from typing import Dict, Any, Union # pylint: disable=unused-import ++ from typing import Dict, Any, Union + except ImportError: + pass # For typing only + +diff --git a/src/pybind/mgr/dashboard/services/cephx.py b/src/pybind/mgr/dashboard/services/cephx.py +index ccda387961..60303ad85f 100644 +--- a/src/pybind/mgr/dashboard/services/cephx.py ++++ b/src/pybind/mgr/dashboard/services/cephx.py +@@ -22,7 +22,7 @@ class CephX(object): + + @classmethod + def list_clients(cls): +- return [client for client in cls._clients_map()] ++ return list(cls._clients_map()) + + @classmethod + def get_client_key(cls, client_id): +diff --git a/src/pybind/mgr/dashboard/services/ganesha.py b/src/pybind/mgr/dashboard/services/ganesha.py +index e9144db406..764ebb3739 100644 +--- a/src/pybind/mgr/dashboard/services/ganesha.py ++++ b/src/pybind/mgr/dashboard/services/ganesha.py +@@ -69,7 +69,7 @@ class Ganesha(object): + + @classmethod + def get_ganesha_clusters(cls): +- return [cluster_id for cluster_id in cls._get_clusters_locations()] ++ return list(cls._get_clusters_locations()) + + @staticmethod + def _get_orch_nfs_instances(): +@@ -325,7 +325,7 @@ class GaneshaConfParser(object): + for key, val in block.items(): + if key == 'block_name': + continue +- elif key == '_blocks_': ++ if key == '_blocks_': + for blo in val: + conf_str += GaneshaConfParser.write_block(blo, depth) + elif val: +@@ -693,21 +693,21 @@ class Export(object): + result['attr_expiration_time'] = self.attr_expiration_time + result['security_label'] = self.security_label + if 'protocols' not in defaults: +- result['protocols'] = [p for p in self.protocols] ++ result['protocols'] = list(self.protocols) + else: + def_proto = defaults['protocols'] + if not isinstance(def_proto, list): + def_proto = set([def_proto]) + if self.protocols != def_proto: +- result['protocols'] = [p for p in self.protocols] ++ result['protocols'] = list(self.protocols) + if 'transports' not in defaults: +- result['transports'] = [t for t in self.transports] ++ result['transports'] = list(self.transports) + else: + def_transp = defaults['transports'] + if not isinstance(def_transp, list): + def_transp = set([def_transp]) + if self.transports != def_transp: +- result['transports'] = [t for t in self.transports] ++ result['transports'] = list(self.transports) + + result['_blocks_'] = [self.fsal.to_fsal_block()] + result['_blocks_'].extend([client.to_client_block() +@@ -737,14 +737,14 @@ class Export(object): + 'path': self.path, + 'fsal': self.fsal.to_dict(), + 'cluster_id': self.cluster_id, +- 'daemons': sorted([d for d in self.daemons]), ++ 'daemons': sorted(list(self.daemons)), + 'pseudo': self.pseudo, + 'tag': self.tag, + 'access_type': self.access_type, + 'squash': self.squash, + 'security_label': self.security_label, +- 'protocols': sorted([p for p in self.protocols]), +- 'transports': sorted([t for t in self.transports]), ++ 'protocols': sorted(list(self.protocols)), ++ 'transports': sorted(list(self.transports)), + 'clients': [client.to_dict() for client in self.clients] + } + +@@ -992,7 +992,7 @@ class GaneshaConf(object): + return None + + def list_daemons(self): +- return [daemon_id for daemon_id in self.daemons_conf_blocks] ++ return list(self.daemons_conf_blocks) + + def reload_daemons(self, daemons): + with mgr.rados.open_ioctx(self.rados_pool) as ioctx: +diff --git a/src/pybind/mgr/dashboard/services/iscsi_client.py b/src/pybind/mgr/dashboard/services/iscsi_client.py +index b82a51a3d4..c5a6dfa0e7 100644 +--- a/src/pybind/mgr/dashboard/services/iscsi_client.py ++++ b/src/pybind/mgr/dashboard/services/iscsi_client.py +@@ -12,7 +12,7 @@ try: + except ImportError: + from urllib.parse import urlparse + +-from .iscsi_config import IscsiGatewaysConfig # pylint: disable=cyclic-import ++from .iscsi_config import IscsiGatewaysConfig + from ..settings import Settings + from ..rest_client import RestClient + +diff --git a/src/pybind/mgr/dashboard/services/iscsi_config.py b/src/pybind/mgr/dashboard/services/iscsi_config.py +index ab90048500..86bdfc770d 100644 +--- a/src/pybind/mgr/dashboard/services/iscsi_config.py ++++ b/src/pybind/mgr/dashboard/services/iscsi_config.py +@@ -57,7 +57,7 @@ class IscsiGatewaysConfig(object): + """ + for gateway_name, gateway_config in config['gateways'].items(): + if '.' not in gateway_name: +- from .iscsi_client import IscsiClient ++ from .iscsi_client import IscsiClient # pylint: disable=cyclic-import + from ..rest_client import RequestException + try: + service_url = gateway_config['service_url'] +diff --git a/src/pybind/mgr/dashboard/services/progress.py b/src/pybind/mgr/dashboard/services/progress.py +index d8cf7521fa..d7b9ed973b 100644 +--- a/src/pybind/mgr/dashboard/services/progress.py ++++ b/src/pybind/mgr/dashboard/services/progress.py +@@ -12,7 +12,7 @@ from __future__ import absolute_import + from datetime import datetime + import logging + +-from . import rbd ++from . import rbd # pylint: disable=no-name-in-module + from .. import mgr + + +diff --git a/src/pybind/mgr/dashboard/services/rgw_client.py b/src/pybind/mgr/dashboard/services/rgw_client.py +index 5507eb6800..aee18acc54 100644 +--- a/src/pybind/mgr/dashboard/services/rgw_client.py ++++ b/src/pybind/mgr/dashboard/services/rgw_client.py +@@ -16,7 +16,7 @@ from ..tools import build_url, dict_contains_path, json_str_to_object,\ + from .. import mgr + + try: +- from typing import Dict, List, Optional # pylint: disable=unused-import ++ from typing import Dict, List, Optional + except ImportError: + pass # For typing only + +@@ -303,6 +303,7 @@ class RgwClient(RestClient): + if self.userid != RgwClient._SYSTEM_USERID: + logger.info("Fetching new keys for user: %s", self.userid) + keys = RgwClient.admin_instance().get_user_keys(self.userid) ++ # pylint: disable=attribute-defined-outside-init + self.auth = S3Auth(keys['access_key'], keys['secret_key'], + service_url=self.service_url) + else: +diff --git a/src/pybind/mgr/dashboard/tests/__init__.py b/src/pybind/mgr/dashboard/tests/__init__.py +index 421378a155..8eb5bb8af1 100644 +--- a/src/pybind/mgr/dashboard/tests/__init__.py ++++ b/src/pybind/mgr/dashboard/tests/__init__.py +@@ -21,7 +21,7 @@ from ..services.auth import AuthManagerTool + from ..services.exception import dashboard_exception_handler + + from ..plugins import PLUGIN_MANAGER +-from ..plugins import feature_toggles, debug # noqa # pylint: disable=unused-import ++from ..plugins import feature_toggles, debug # noqa + + + PLUGIN_MANAGER.hook.init() +diff --git a/src/pybind/mgr/dashboard/tests/helper.py b/src/pybind/mgr/dashboard/tests/helper.py +index 9ec043d6be..06b83d42a8 100644 +--- a/src/pybind/mgr/dashboard/tests/helper.py ++++ b/src/pybind/mgr/dashboard/tests/helper.py +@@ -2,7 +2,7 @@ + from __future__ import absolute_import + + try: +- from typing import Dict, Any # pylint: disable=unused-import ++ from typing import Dict, Any + except ImportError: + pass + +diff --git a/src/pybind/mgr/dashboard/tests/test_access_control.py b/src/pybind/mgr/dashboard/tests/test_access_control.py +index 0039efc167..81604a161e 100644 +--- a/src/pybind/mgr/dashboard/tests/test_access_control.py ++++ b/src/pybind/mgr/dashboard/tests/test_access_control.py +@@ -9,7 +9,7 @@ import unittest + + from datetime import datetime, timedelta + +-from . import CmdException, CLICommandTestMixin ++from . import CmdException, CLICommandTestMixin # pylint: disable=no-name-in-module + from .. import mgr + from ..security import Scope, Permission + from ..services.access_control import load_access_control_db, \ +diff --git a/src/pybind/mgr/dashboard/tests/test_api_auditing.py b/src/pybind/mgr/dashboard/tests/test_api_auditing.py +index 0416c03638..023ea7992a 100644 +--- a/src/pybind/mgr/dashboard/tests/test_api_auditing.py ++++ b/src/pybind/mgr/dashboard/tests/test_api_auditing.py +@@ -9,7 +9,7 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import ControllerTestCase, KVStoreMockMixin ++from . import ControllerTestCase, KVStoreMockMixin # pylint: disable=no-name-in-module + from ..controllers import RESTController, Controller + from ..tools import RequestLoggingTool + from .. import mgr +diff --git a/src/pybind/mgr/dashboard/tests/test_cephfs.py b/src/pybind/mgr/dashboard/tests/test_cephfs.py +index e9abda5380..778b0aa275 100644 +--- a/src/pybind/mgr/dashboard/tests/test_cephfs.py ++++ b/src/pybind/mgr/dashboard/tests/test_cephfs.py +@@ -6,7 +6,7 @@ except ImportError: + from unittest.mock import Mock + + from .. import mgr +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers.cephfs import CephFS + + +diff --git a/src/pybind/mgr/dashboard/tests/test_controllers.py b/src/pybind/mgr/dashboard/tests/test_controllers.py +index 0e88047061..b14878ff2e 100644 +--- a/src/pybind/mgr/dashboard/tests/test_controllers.py ++++ b/src/pybind/mgr/dashboard/tests/test_controllers.py +@@ -1,7 +1,7 @@ + # -*- coding: utf-8 -*- + from __future__ import absolute_import + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers import BaseController, RESTController, Controller, \ + ApiController, Endpoint + +diff --git a/src/pybind/mgr/dashboard/tests/test_docs.py b/src/pybind/mgr/dashboard/tests/test_docs.py +index a6e03b5267..ccb777aca5 100644 +--- a/src/pybind/mgr/dashboard/tests/test_docs.py ++++ b/src/pybind/mgr/dashboard/tests/test_docs.py +@@ -1,7 +1,7 @@ + # # -*- coding: utf-8 -*- + from __future__ import absolute_import + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers import RESTController, ApiController, Endpoint, EndpointDoc, ControllerDoc + from ..controllers.docs import Docs + +diff --git a/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py b/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py +index 557b7c1061..d266735e8f 100644 +--- a/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py ++++ b/src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py +@@ -1,7 +1,7 @@ + # -*- coding: utf-8 -*- + + from .. import mgr +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers.erasure_code_profile import ErasureCodeProfile + + +diff --git a/src/pybind/mgr/dashboard/tests/test_exceptions.py b/src/pybind/mgr/dashboard/tests/test_exceptions.py +index 2bb25da1bf..b42c356479 100644 +--- a/src/pybind/mgr/dashboard/tests/test_exceptions.py ++++ b/src/pybind/mgr/dashboard/tests/test_exceptions.py +@@ -5,7 +5,7 @@ import time + + import rados + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..services.ceph_service import SendCommandError + from ..controllers import RESTController, Controller, Task, Endpoint + from ..services.exception import handle_rados_error, handle_send_command_error, \ +diff --git a/src/pybind/mgr/dashboard/tests/test_feature_toggles.py b/src/pybind/mgr/dashboard/tests/test_feature_toggles.py +index 031d0ef839..23068c5eda 100644 +--- a/src/pybind/mgr/dashboard/tests/test_feature_toggles.py ++++ b/src/pybind/mgr/dashboard/tests/test_feature_toggles.py +@@ -7,7 +7,7 @@ try: + except ImportError: + from unittest.mock import Mock, patch + +-from . import KVStoreMockMixin ++from . import KVStoreMockMixin # pylint: disable=no-name-in-module + from ..plugins.feature_toggles import FeatureToggles, Features + + +diff --git a/src/pybind/mgr/dashboard/tests/test_ganesha.py b/src/pybind/mgr/dashboard/tests/test_ganesha.py +index 03f1f5b551..44498ac40c 100644 +--- a/src/pybind/mgr/dashboard/tests/test_ganesha.py ++++ b/src/pybind/mgr/dashboard/tests/test_ganesha.py +@@ -9,7 +9,7 @@ except ImportError: + from unittest.mock import MagicMock, Mock + + import orchestrator +-from . import KVStoreMockMixin ++from . import KVStoreMockMixin # pylint: disable=no-name-in-module + from .. import mgr + from ..settings import Settings + from ..services import ganesha +diff --git a/src/pybind/mgr/dashboard/tests/test_grafana.py b/src/pybind/mgr/dashboard/tests/test_grafana.py +index 0eb46bf0f0..a5456905f2 100644 +--- a/src/pybind/mgr/dashboard/tests/test_grafana.py ++++ b/src/pybind/mgr/dashboard/tests/test_grafana.py +@@ -8,7 +8,7 @@ except ImportError: + + from requests import RequestException + +-from . import ControllerTestCase, KVStoreMockMixin ++from . import ControllerTestCase, KVStoreMockMixin # pylint: disable=no-name-in-module + from ..controllers.grafana import Grafana + from ..grafana import GrafanaRestClient + from ..settings import Settings +diff --git a/src/pybind/mgr/dashboard/tests/test_home.py b/src/pybind/mgr/dashboard/tests/test_home.py +index c3088b7a65..c942eed9be 100644 +--- a/src/pybind/mgr/dashboard/tests/test_home.py ++++ b/src/pybind/mgr/dashboard/tests/test_home.py +@@ -8,7 +8,7 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import ControllerTestCase, FakeFsMixin ++from . import ControllerTestCase, FakeFsMixin # pylint: disable=no-name-in-module + from .. import mgr + + from ..controllers.home import HomeController, LanguageMixin +diff --git a/src/pybind/mgr/dashboard/tests/test_host.py b/src/pybind/mgr/dashboard/tests/test_host.py +index ab7286074b..191c3f1245 100644 +--- a/src/pybind/mgr/dashboard/tests/test_host.py ++++ b/src/pybind/mgr/dashboard/tests/test_host.py +@@ -7,7 +7,7 @@ except ImportError: + + from orchestrator import HostSpec + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers.host import get_hosts, Host, HostUi + from .. import mgr + +diff --git a/src/pybind/mgr/dashboard/tests/test_iscsi.py b/src/pybind/mgr/dashboard/tests/test_iscsi.py +index 962ffeb684..72d64453ac 100644 +--- a/src/pybind/mgr/dashboard/tests/test_iscsi.py ++++ b/src/pybind/mgr/dashboard/tests/test_iscsi.py +@@ -10,7 +10,8 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import CmdException, ControllerTestCase, CLICommandTestMixin, KVStoreMockMixin ++from . import CmdException, ControllerTestCase, CLICommandTestMixin, \ ++ KVStoreMockMixin # pylint: disable=no-name-in-module + from .. import mgr + from ..controllers.iscsi import Iscsi, IscsiTarget + from ..services.iscsi_client import IscsiClient +diff --git a/src/pybind/mgr/dashboard/tests/test_orchestrator.py b/src/pybind/mgr/dashboard/tests/test_orchestrator.py +index 714d59c085..9a9d179bbc 100644 +--- a/src/pybind/mgr/dashboard/tests/test_orchestrator.py ++++ b/src/pybind/mgr/dashboard/tests/test_orchestrator.py +@@ -6,7 +6,7 @@ except ImportError: + + from orchestrator import InventoryHost + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from .. import mgr + from ..controllers.orchestrator import get_device_osd_map + from ..controllers.orchestrator import Orchestrator +diff --git a/src/pybind/mgr/dashboard/tests/test_osd.py b/src/pybind/mgr/dashboard/tests/test_osd.py +index aeb32ed576..063705ddbb 100644 +--- a/src/pybind/mgr/dashboard/tests/test_osd.py ++++ b/src/pybind/mgr/dashboard/tests/test_osd.py +@@ -11,11 +11,11 @@ except ImportError: + from ceph.deployment.drive_group import DeviceSelection, DriveGroupSpec + from ceph.deployment.service_spec import PlacementSpec + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers.osd import Osd + from ..tools import NotificationQueue, TaskManager + from .. import mgr +-from .helper import update_dict ++from .helper import update_dict # pylint: disable=import-error + + try: + from typing import List, Dict, Any # pylint: disable=unused-import +diff --git a/src/pybind/mgr/dashboard/tests/test_plugin_debug.py b/src/pybind/mgr/dashboard/tests/test_plugin_debug.py +index 4985540046..cb4d1afc21 100644 +--- a/src/pybind/mgr/dashboard/tests/test_plugin_debug.py ++++ b/src/pybind/mgr/dashboard/tests/test_plugin_debug.py +@@ -1,7 +1,7 @@ + # -*- coding: utf-8 -*- + from __future__ import absolute_import + +-from . import CLICommandTestMixin, ControllerTestCase ++from . import CLICommandTestMixin, ControllerTestCase # pylint: disable=no-name-in-module + + + class TestPluginDebug(ControllerTestCase, CLICommandTestMixin): +diff --git a/src/pybind/mgr/dashboard/tests/test_pool.py b/src/pybind/mgr/dashboard/tests/test_pool.py +index e33e436540..179a8feeed 100644 +--- a/src/pybind/mgr/dashboard/tests/test_pool.py ++++ b/src/pybind/mgr/dashboard/tests/test_pool.py +@@ -6,7 +6,7 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers.pool import Pool + from ..controllers.task import Task + from ..tools import NotificationQueue, TaskManager +diff --git a/src/pybind/mgr/dashboard/tests/test_prometheus.py b/src/pybind/mgr/dashboard/tests/test_prometheus.py +index 3385d66a97..ef669a6203 100644 +--- a/src/pybind/mgr/dashboard/tests/test_prometheus.py ++++ b/src/pybind/mgr/dashboard/tests/test_prometheus.py +@@ -5,7 +5,7 @@ try: + except ImportError: + from unittest.mock import patch + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from .. import mgr + from ..controllers.prometheus import Prometheus, PrometheusReceiver, PrometheusNotifications + +diff --git a/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py b/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py +index ecb4856dc1..d7e0c7dd1e 100644 +--- a/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py ++++ b/src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py +@@ -6,7 +6,7 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from .. import mgr + from ..controllers.summary import Summary + from ..controllers.rbd_mirroring import RbdMirroring, RbdMirroringSummary, \ +diff --git a/src/pybind/mgr/dashboard/tests/test_rest_tasks.py b/src/pybind/mgr/dashboard/tests/test_rest_tasks.py +index e9d7907f05..aa158cd288 100644 +--- a/src/pybind/mgr/dashboard/tests/test_rest_tasks.py ++++ b/src/pybind/mgr/dashboard/tests/test_rest_tasks.py +@@ -8,7 +8,7 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers import Controller, RESTController, Task + from ..controllers.task import Task as TaskController + from ..services import progress +diff --git a/src/pybind/mgr/dashboard/tests/test_rgw.py b/src/pybind/mgr/dashboard/tests/test_rgw.py +index 2c90e7d11b..11818ca2b7 100644 +--- a/src/pybind/mgr/dashboard/tests/test_rgw.py ++++ b/src/pybind/mgr/dashboard/tests/test_rgw.py +@@ -3,7 +3,7 @@ try: + except ImportError: + import unittest.mock as mock + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..controllers.rgw import RgwUser + + +diff --git a/src/pybind/mgr/dashboard/tests/test_rgw_client.py b/src/pybind/mgr/dashboard/tests/test_rgw_client.py +index d69ab2f48d..fa711b45ca 100644 +--- a/src/pybind/mgr/dashboard/tests/test_rgw_client.py ++++ b/src/pybind/mgr/dashboard/tests/test_rgw_client.py +@@ -9,7 +9,7 @@ except ImportError: + + from ..services.rgw_client import RgwClient, _parse_frontend_config + from ..settings import Settings +-from . import KVStoreMockMixin ++from . import KVStoreMockMixin # pylint: disable=no-name-in-module + + + class RgwClientTest(unittest.TestCase, KVStoreMockMixin): +diff --git a/src/pybind/mgr/dashboard/tests/test_settings.py b/src/pybind/mgr/dashboard/tests/test_settings.py +index da54a20655..abdb059c1d 100644 +--- a/src/pybind/mgr/dashboard/tests/test_settings.py ++++ b/src/pybind/mgr/dashboard/tests/test_settings.py +@@ -3,7 +3,7 @@ from __future__ import absolute_import + + import errno + import unittest +-from . import KVStoreMockMixin, ControllerTestCase ++from . import KVStoreMockMixin, ControllerTestCase # pylint: disable=no-name-in-module + from .. import settings + from ..controllers.settings import Settings as SettingsController + from ..settings import Settings, handle_option_command +diff --git a/src/pybind/mgr/dashboard/tests/test_sso.py b/src/pybind/mgr/dashboard/tests/test_sso.py +index f8681b89ed..e8141a09cc 100644 +--- a/src/pybind/mgr/dashboard/tests/test_sso.py ++++ b/src/pybind/mgr/dashboard/tests/test_sso.py +@@ -5,7 +5,8 @@ from __future__ import absolute_import + import errno + import unittest + +-from . import CmdException, exec_dashboard_cmd, KVStoreMockMixin ++from . import CmdException, exec_dashboard_cmd, \ ++ KVStoreMockMixin # pylint: disable=no-name-in-module + from ..services.sso import handle_sso_command, load_sso_db + + +diff --git a/src/pybind/mgr/dashboard/tests/test_tools.py b/src/pybind/mgr/dashboard/tests/test_tools.py +index 0f27ec8e63..340ff8c41d 100644 +--- a/src/pybind/mgr/dashboard/tests/test_tools.py ++++ b/src/pybind/mgr/dashboard/tests/test_tools.py +@@ -10,7 +10,7 @@ try: + except ImportError: + from unittest.mock import patch + +-from . import ControllerTestCase ++from . import ControllerTestCase # pylint: disable=no-name-in-module + from ..services.exception import handle_rados_error + from ..controllers import RESTController, ApiController, Controller, \ + BaseController, Proxy +diff --git a/src/pybind/mgr/dashboard/tools.py b/src/pybind/mgr/dashboard/tools.py +index 2b6d92ca55..d9a2d813c0 100644 +--- a/src/pybind/mgr/dashboard/tools.py ++++ b/src/pybind/mgr/dashboard/tools.py +@@ -30,7 +30,7 @@ from .services.auth import JwtManager + + try: + from typing import Any, AnyStr, Callable, DefaultDict, Deque,\ +- Dict, List, Set, Tuple, Union # noqa pylint: disable=unused-import ++ Dict, List, Set, Tuple, Union # noqa + except ImportError: + pass # For typing only + Copied: ceph/repos/community-staging-x86_64/qa-src-update-mypy-to-0.782.patch (from rev 1059267, ceph/trunk/qa-src-update-mypy-to-0.782.patch) =================================================================== --- community-staging-x86_64/qa-src-update-mypy-to-0.782.patch (rev 0) +++ community-staging-x86_64/qa-src-update-mypy-to-0.782.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,65 @@ +From a61e8e3b6052bf158fe63ab1cd66197f4ffc3900 Mon Sep 17 00:00:00 2001 +From: Sebastian Wagner <sebastian.wag...@suse.com> +Date: Thu, 25 Jun 2020 14:11:54 +0200 +Subject: [PATCH] qa,src: update mypy to 0.782 + +(cherry picked from commit 78f3473f55afe14698dc702e24cf34030223a373) +--- + qa/tox.ini | 2 +- + src/pybind/mgr/dashboard/rest_client.py | 2 +- + src/pybind/mgr/tox.ini | 2 +- + src/python-common/requirements.txt | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/qa/tox.ini b/qa/tox.ini +index 31a1ef4fd4..33ad2db968 100644 +--- a/qa/tox.ini ++++ b/qa/tox.ini +@@ -16,7 +16,7 @@ commands=flake8 --select=F,E9 --exclude=venv,.tox + + [testenv:mypy] + basepython = python3 +-deps = mypy==0.770 ++deps = mypy==0.782 + commands = mypy {posargs:.} + + [testenv:pytest] +diff --git a/src/pybind/mgr/dashboard/rest_client.py b/src/pybind/mgr/dashboard/rest_client.py +index 4d58d0dfde..7c04f36a0d 100644 +--- a/src/pybind/mgr/dashboard/rest_client.py ++++ b/src/pybind/mgr/dashboard/rest_client.py +@@ -511,7 +511,7 @@ class RestClient(object): + resp_structure = api_kwargs.get('resp_structure', None) + args_name = inspect.getargspec(func).args + args_dict = dict(zip(args_name[1:], args)) +- for key, val in kwargs: ++ for key, val in kwargs.items(): + args_dict[key] = val + return func( + self, +diff --git a/src/pybind/mgr/tox.ini b/src/pybind/mgr/tox.ini +index 3e129ba64e..4c65be7f16 100644 +--- a/src/pybind/mgr/tox.ini ++++ b/src/pybind/mgr/tox.ini +@@ -47,7 +47,7 @@ basepython = python3 + deps = + cython + -rrequirements.txt +- mypy==0.770 ++ mypy==0.782 + commands = + mypy --config-file=../../mypy.ini \ + cephadm/module.py \ +diff --git a/src/python-common/requirements.txt b/src/python-common/requirements.txt +index a269fada78..7df43fb736 100644 +--- a/src/python-common/requirements.txt ++++ b/src/python-common/requirements.txt +@@ -1,7 +1,7 @@ + six + pytest >=2.1.3,<5; python_version < '3.5' + mock; python_version < '3.3' +-mypy==0.770; python_version >= '3' ++mypy==0.782; python_version >= '3' + pytest-mypy; python_version >= '3' + pytest >= 2.1.3; python_version >= '3' + pyyaml Copied: ceph/repos/community-staging-x86_64/remove-distro-version-detection.patch (from rev 1059267, ceph/trunk/remove-distro-version-detection.patch) =================================================================== --- community-staging-x86_64/remove-distro-version-detection.patch (rev 0) +++ community-staging-x86_64/remove-distro-version-detection.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,10 @@ +--- a/src/common/util.cc 2018-05-29 14:04:02.000000000 +0200 ++++ b/src/common/util.cc 2018-06-04 13:45:52.279495745 +0200 +@@ -96,7 +96,6 @@ static bool os_release_parse(map<string, + static const map<string, string> kvm = { + { "distro", "ID=" }, + { "distro_description", "PRETTY_NAME=" }, +- { "distro_version", "VERSION_ID=" } + }; + + FILE *fp = fopen("/etc/os-release", "r"); Copied: ceph/repos/community-staging-x86_64/suppress-pylint-warnings.patch (from rev 1059267, ceph/trunk/suppress-pylint-warnings.patch) =================================================================== --- community-staging-x86_64/suppress-pylint-warnings.patch (rev 0) +++ community-staging-x86_64/suppress-pylint-warnings.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,23 @@ +--- a/src/pybind/mgr/dashboard/.pylintrc 2019-12-06 17:42:34.000000000 +0100 ++++ b/src/pybind/mgr/dashboard/.pylintrc 2020-01-03 13:55:54.511393504 +0100 +@@ -119,7 +119,11 @@ disable=import-star-module-level, + too-many-arguments, + too-many-locals, + too-many-statements, +- useless-object-inheritance ++ useless-object-inheritance, ++ no-else-raise, ++ multiple-statements, ++ unused-argument, ++ protected-access + + + # Enable the message, report, category or checker with the given id(s). You can +--- a/src/pybind/mgr/dashboard/services/rgw_client.py 2019-12-06 17:42:34.000000000 +0100 ++++ b/src/pybind/mgr/dashboard/services/rgw_client.py 2020-01-03 15:13:15.266131061 +0100 +@@ -1,4 +1,5 @@ + # -*- coding: utf-8 -*- ++# pylint: disable=unused-argument + from __future__ import absolute_import + + import re Copied: ceph/repos/community-staging-x86_64/use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch (from rev 1059267, ceph/trunk/use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch) =================================================================== --- community-staging-x86_64/use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch (rev 0) +++ community-staging-x86_64/use-system-zstd-and-fix-zstd-1.4.0-compatbility.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,35 @@ +--- a/src/compressor/zstd/ZstdCompressor.h 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/compressor/zstd/ZstdCompressor.h 2019-07-17 19:11:33.177014923 +0200 +@@ -16,7 +16,7 @@ + #define CEPH_ZSTDCOMPRESSOR_H + + #define ZSTD_STATIC_LINKING_ONLY +-#include "zstd/lib/zstd.h" ++#include <zstd.h> + + #include "include/buffer.h" + #include "include/encoding.h" +@@ -30,7 +30,13 @@ class ZstdCompressor : public Compressor + + int compress(const bufferlist &src, bufferlist &dst) override { + ZSTD_CStream *s = ZSTD_createCStream(); +- ZSTD_initCStream_srcSize(s, COMPRESSION_LEVEL, src.length()); ++ ++ // ZSTD_initCStream_srcSize(s, COMPRESSION_LEVEL, src.length()); ++ ZSTD_CCtx_reset(s, ZSTD_reset_session_only); ++ ZSTD_CCtx_refCDict(s, NULL); // clear the dictionary (if any) ++ ZSTD_CCtx_setParameter(s, ZSTD_c_compressionLevel, COMPRESSION_LEVEL); ++ ZSTD_CCtx_setPledgedSrcSize(s, src.length()); ++ + auto p = src.begin(); + size_t left = src.length(); + +@@ -48,7 +54,7 @@ class ZstdCompressor : public Compressor + inbuf.size = p.get_ptr_and_advance(left, (const char**)&inbuf.src); + left -= inbuf.size; + ZSTD_EndDirective const zed = (left==0) ? ZSTD_e_end : ZSTD_e_continue; +- size_t r = ZSTD_compress_generic(s, &outbuf, &inbuf, zed); ++ size_t r = ZSTD_compressStream2(s, &outbuf, &inbuf, zed); + if (ZSTD_isError(r)) { + return -EINVAL; + } Copied: ceph/repos/community-staging-x86_64/use-threadsafe-death-tests-objectstore-memstore.patch (from rev 1059267, ceph/trunk/use-threadsafe-death-tests-objectstore-memstore.patch) =================================================================== --- community-staging-x86_64/use-threadsafe-death-tests-objectstore-memstore.patch (rev 0) +++ community-staging-x86_64/use-threadsafe-death-tests-objectstore-memstore.patch 2021-12-01 13:06:59 UTC (rev 1059268) @@ -0,0 +1,10 @@ +--- a/src/test/test_objectstore_memstore.sh 2019-04-25 20:15:48.000000000 +0200 ++++ b/src/test/test_objectstore_memstore.sh 2019-07-14 21:18:32.845040824 +0200 +@@ -1,6 +1,6 @@ + #!/bin/sh -ex + + rm -rf memstore.test_temp_dir +-ceph_test_objectstore --gtest_filter=\*/0 ++ceph_test_objectstore --gtest_filter=\*/0 --gtest_death_test_style=threadsafe + + echo OK