Commit Graph

1397 Commits

Author SHA1 Message Date
Kefu Chai
38be14bc0f ceph.spec.in: increase the mem_per_job to 3GiB
to lower the number of jobs, we are experiencing build failures on
a builder with 48c96t, 193 free mem. the failures were caused by
OOM killer which kills the c++ compiler

[498376.128969] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/jenkins.service,task=cc1plus,pid=1387895,uid=1110
[498376.145288] Out of memory: Killed process 1387895 (cc1plus) total-vm:3323312kB, anon-rss:3164568kB, file-rss:0kB, shmem-rss:0kB, UID:1110
[498376.315185] oom_reaper: reaped process 1387895 (cc1plus), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[498377.882072] cc1plus invoked oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0

before this change, we use the total memory to calculate the number
of jobs, and assume that each job takes at most 2.5GiB mem. in the
case above, the # of job is 96.

after this change, we use the free memory, and increse the mem per job
to 3.0GiB. in the case above, the # of job would be 85.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-06-03 21:02:33 +08:00
Misono Tomohiro
f38def9273 ceph.spec.in: install gcc-toolset-9-gcc-c++ for rhel only
Otherwise fedora 33 complains there is no gcc-toolset-9-gcc-c++
when running "WITH_SEASTAR=true ./install_deps.sh"

Related to: 36759b5363
Signed-off-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
2021-05-26 16:21:34 +09:00
Kefu Chai
1c04ce6f3a doc/man: build and install cephfs-shell manpage
otherwise the manpage of cephfs-shell is not built and installed.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-05-05 14:41:50 +08:00
Patrick Donnelly
52faaf848e
Revert "Merge PR #41134 into master"
This reverts commit 93bca2d0e9, reversing
changes made to 7e70b15c43.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2021-05-04 14:46:47 -07:00
Kefu Chai
5191008aa4 doc/man: build and install cephfs-shell manpage
otherwise the manpage of cephfs-shell is not built and installed.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-05-04 15:11:22 +08:00
Kefu Chai
ecb8d2cae2 ceph.spec.in: do not build with system pmdk by default
we need to use libpmem 1.10 in #40493.

without enabling the module stream offering libpmem 1.9.2, we can only
have access to libpmem 1.6.1. and fedora 33 only has libpmem 1.9
packaged. the same applies to openSUSE Tumbleweed and openSUSE Leap. so
let's stop using libpmem packaged by distro by default, until these
distros include libpmem 1.10.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-04-26 16:38:09 +08:00
Patrick Donnelly
a4d3377ff4
Merge PR #40526 into master
* refs/pull/40526/head:
	spec: add nfs to spec file
	mgr/nfs: Don't enable nfs module by default
	mgr/nfs: check for invalid chars in cluster id
	mgr/nfs: Use CLICommand wrapper
	mgr/nfs: reorg nfs files
	mgr/nfs: Check if transport or protocol are list instance
	mgr/nfs: reorg cluster class and common helper methods
	mgr/nfs: move common export helper methods to ExportMgr class
	mgr/nfs: move validate methods into new ValidateExport class
	mgr/nfs: add custom exception module
	mgr/nfs: create new module for export utils
	mgr/nfs: rename fs dir to export
	mgr/volumes/nfs: Move nfs code out of volumes plugin

Reviewed-by: Alfonso Martínez <almartin@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
2021-04-22 09:20:59 -07:00
Kefu Chai
148ede83f6
Merge pull request #40956 from rzarzynski/wip-crimson-depends-on-binutils
ceph.spec.in: crimson depends on binutils b/c of addr2line.

Reviewed-by: Kefu Chai <kchai@redhat.com>
2021-04-22 15:27:54 +08:00
Varsha Rao
8ab4950171 spec: add nfs to spec file
Signed-off-by: Varsha Rao <varao@redhat.com>
2021-04-22 11:38:30 +05:30
Radoslaw Zarzynski
32af87341b ceph.spec.in: crimson depends on binutils b/c of addr2line.
This small utility is needed due to the backtrace processing.
See: d3dcf510c3.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
2021-04-21 09:39:02 +00:00
Kefu Chai
f057ea202f
Merge pull request #40749 from tchaikov/wip-python3-spec
ceph.spec: consolidate python3-{setuptools,Cython} builds deps

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Brad Hubbard <bhubbard@redhat.com>
2021-04-19 15:49:37 +08:00
Kefu Chai
5ddda38da4 common: extract options into yaml
extract the options in common/options.cc into separate .yaml.in
files, and preprocess them using CMake before translating them into .cc
files using a python script.

this change paves the road to render the options using sphinx, and
will allow us to further annotate the options to include more metadata.

also, a this YAML file can be consumed by applications like dashboard
and Sphinx to consume these metadata in a simpler way.

* use @variable-name@ for substituting the variables in .yaml.in file
* use cmake variable of `mgr_disabled_modules` instead of C macro
  to define `mgr_disabled_modules` in global.yaml.in
* debian/control, ceph.spec.in, win32_deps_build.sh: add python3-yaml
  as build dep
* add y2c.py (short for YAML to C++) to translate .yaml to .cc file
* common/options/*.yaml.in: extract and split options into .yaml.in
  files, the subvars in it is then replaced with CMake variables,
  and copied to the corresponding .yaml files
* include/config-h.in.cmake: remove MGR_DISABLED_MODULES, as it
  is not a CMake variable.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-04-13 09:13:47 +08:00
Kefu Chai
65ac18be6a ceph.spec: consolidate python3-{setuptools,Cython} builds deps
the names of these packages are the same across SUSE and fedora/RHEL
distros.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-04-10 23:08:50 +08:00
Ilya Dryomov
dc55f0bb43 packaging: require ceph-common for immutable object cache daemon
This daemon has a systemd service which starts it with --setuser ceph
--setgroup ceph.  "ceph" user and group are created by ceph-common and
won't be there unless ceph-common is installed.

Fixes: https://tracker.ceph.com/issues/50207
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2021-04-07 13:11:23 +02:00
Nathan Cutler
404f8b2ce2 rpm: add missing % in %dir directive
de6c8250a6 added an explicit %dir directive for
a new directory added to the ceph-common package, but -- due to a typo --
neglected to include the "%". As a result, RPM builds started to fail with:

Processing files: ceph-common-17.0.0-2787.gde6c8250.el8.x86_64
error: File must begin with "/": {_libdir}/ceph/denc/

RPM build errors:
    File must begin with "/": {_libdir}/ceph/denc/

Fixes: de6c8250a6
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-04-05 17:30:04 +02:00
Nathan Cutler
de6c8250a6 rpm: make ceph-common own the new denc directory
2d3c6561b4 introduced a new library directory
"%{_libdir}/ceph/denc/" in ceph-common but did not explicitly state that it
should be owned by the package. This caused OBS builds to fail as follows:

[ 5515s] ceph-common-17.0.0-2786.1.x86_64.rpm: directories not owned by a package:
[ 5515s]  - /usr/lib64/ceph/denc

Fixes: 2d3c6561b4
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-04-04 11:02:11 +02:00
Kefu Chai
2d3c6561b4 tools/ceph-dencoder: build dencoders as plugins
to reduce the memory footprint when linking ceph-dencoder.

* src/tools/ceph-dencoder:
  * build dencoders as shared libraries named with the prefix of
    "den-mod-". so ceph-dencoder can find them
  * install dencoders into $prefix/lib/ceph/denc, so ceph-dencoder
    can find them
  * only expose "register_dencoders()" function from plugins.
  * load plugins in specified directory
* ceph.spec.in: package plugins
* debian: package plugins

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-04-01 15:46:22 +08:00
Nathan Cutler
4025858570 rpm: drop extraneous explicit sqlite-libs runtime dependency
Commit 75980798f1 introduced a new package,
libcephsqlite, with a hard RPM dependency on a package "sqlite-libs" which
does not exist in openSUSE.

Since the runtime library dependencies of libcephsqlite are handled by RPM
transparently, this line is not needed.

Fixes: https://tracker.ceph.com/issues/50007
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-27 13:22:26 +01:00
Ludwig Nussel
e4c4a4ce97 ceph.spec: prepare openSUSE usrmerge (boo#1029961)
The compat symlink in /sbin is no longer required and actually in
the way in the usrmerge case.

Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2021-03-25 10:35:35 +01:00
Kefu Chai
f3ad86069e
Merge pull request #40300 from tchaikov/test-promtool
ceph.spec,install-deps: use golang-github-prometheus for promtools

Reviewed-by: Brad Hubbard <bhubbard@redhat.com>
Reviewed-by: Aashish Sharma <aasharma@redhat.com>
Reviewed-by: Rishabh Dave <ridave@redhat.com>
2021-03-23 17:30:58 +08:00
Kefu Chai
e33e3a931d ceph.spec,install-deps: use golang-github-prometheus for promtools
instead of installing docker for using promtools, install
golang-github-prometheus.

Signed-off-by: Aashish Sharma <aasharma@redhat.com>
Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-03-22 14:13:17 +08:00
Patrick Donnelly
75980798f1
ceph.spec,debian: package libcephsqlite
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2021-03-19 08:52:55 -07:00
Kefu Chai
01a7ecaba2
Merge pull request #40163 from ktdreyer/resource-agents-noarch
rpm: ceph-resource-agents package is noarch

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
2021-03-18 11:02:22 +08:00
Ken Dreyer
79808963a7 rpm: ceph-resource-agents package is noarch
The ceph-resource-agents package contains an architecture-independent
bash script and parent directories. There are no architecture-dependent
files here, so we can use a single noarch RPM across all host
architectures.

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2021-03-16 16:18:11 -06:00
Kyr Shatskyy
a435380dc3 ceph.spec.in: use ninja instead of ninja-build for openSUSE
And since the dependency is now distro-conditional, moving it down
to the 'distro-conditional make check dependencies' section.

Signed-off-by: Kyr Shatskyy <kyrylo.shatskyy@suse.com>
2021-03-16 12:45:26 +01:00
Kefu Chai
75b58115ea ceph.spec: build with system libpmem on fedora and el8
* build with WITH_SYSTEM_PMDK=ON on fedora, as f32 and f33 ship
  libpmem1.8 and libpmem1.9 respectively. and we need libpmem v1.7
* build with WITH_SYSTEM_PMDK=ON on el8, as el8 and CentOS8 AppStream
  ships libpmem v1.6,

quote from nvml.spec:

> By design, PMDK does not support any 32-bit architecture.
> Due to dependency on some inline assembly, PMDK can be compiled only
> on these architectures:
> - x86_64
> - ppc64le (experimental)
> - aarch64 (unmaintained, supporting hardware doesn't exist?)

so far, only x86_64 and ppc64le packages are built.

see also,
https://src.fedoraproject.org/rpms/nvml/blob/rawhide/f/nvml.spec

this change addresses a regression introduced by
a49d1dbb32

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-03-12 23:04:11 +08:00
Kefu Chai
80f8f0956c ceph.spec: include ninja as BuildRequires
to ease the build for developers using SUSE, Fedora, CentOS or RHEL.
so install-deps.sh can install ninja for them.

Fixes: https://tracker.ceph.com/issues/49694
Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-03-10 18:19:49 +08:00
Kefu Chai
6de97d4434 ceph.spec: prepare for out-of-source build
see also
https://fedoraproject.org/wiki/Changes/CMake_to_do_out-of-source_builds

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-03-09 19:13:19 +08:00
Kefu Chai
624be364c6
Merge pull request #39909 from smithfarm/wip-revert-make-build-on-suse
rpm: refrain from using %make_build macro on SUSE

Reviewed-by: Kefu Chai <kchai@redhat.com>
2021-03-09 16:58:58 +08:00
Nathan Cutler
40cbd283bd rpm: refrain from using %make_build macro on SUSE
The recently merged commit 0e511973f7 replaced

    make %{_smp_mflags}

with

    %make_build

for the stated purpose of hiding the %_smp_mflags macro in a higher-level macro.

But, on SUSE, the higher-level macro (%make_build) expands to:

    make -O %{_smp_mflags}

The addition of the -O flag makes the build considerably slower and increases
the memory requirement. The exact reason for this is unknown - possibly it's due
to a bug in make, although the same slowness was observed with ninja as well.
In any event, this is a deal-breaker when building in the OBS, because the build
infrastructure there is optimized for builds that do not require huge amounts of
memory and we would rather have a fast build with mixed up compiler messages
than a very slow one with synced compiler messages.

Fixes: 0e511973f7
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-08 11:52:09 +01:00
Marcus Watts
8afd92425b rgw/kms/vault - need libicu to make canonical json for encryption contexts.
for encryption, aws s3 provides an "encryption" context to vary per-object
keys.  The encryption context is a base64 encoded json structure, which
must be converted to a determinstic form -- "canonical json".  This
requires converting all strings to a normalized canonical form: "utf-8 nfc",
it also requires thta keys in objects be sorted in a fixed order; so some
form of sorting based on nfc.

It turns out that libicu was the best way to produce utf-8 nfc (boost also
provides a mechanism, but it has many quirks).  So, here are the hooks
to pull the system libicu into the build.

Fixes: http://tracker.ceph.com/issues/48746
Signed-off-by: Marcus Watts <mwatts@redhat.com>
2021-03-05 17:15:24 -05:00
Nathan Cutler
8b5bae19e5
Merge pull request #39813 from smithfarm/wip-49583
rpm: disable parallel compression on SUSE

Reviewed-by: Kefu Chai <kchai@redhat.com>
2021-03-05 14:28:08 +01:00
Nathan Cutler
30df650e64 rpm: use PMDK system libraries on SUSE
As of a49d1dbb32, when the rbd_rwl_cache and
rbd_ssd_cache bconds are enabled and WITH_SYSTEM_PMDK is disabled (as it is by
default), the RPM build attempts to

    git clone https://github.com/ceph/pmdk.git

but of course that won't work in the OBS, where the build workers have no
Internet connectivity.

Fortunately, the openSUSE/SLE versions targeted by Ceph master and pacific ship
the necessary PMDK libraries as RPM packages.

Fixes: a49d1dbb32
Fixes: https://tracker.ceph.com/issues/49550
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-03 20:46:20 +01:00
Nathan Cutler
ef0384dc50
Merge pull request #39765 from smithfarm/wip-ncpus-for-obs
rpm: set build parallelism from memory on SUSE

Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: David Galloway <dgallowa@redhat.com>
2021-03-03 20:44:20 +01:00
Nathan Cutler
19f492014b rpm: drop old SUSE-specific OOM fix
This fix was needed some years ago, but no longer.

Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-03 15:52:04 +01:00
Nathan Cutler
7efcc72483 rpm: limit build jobs by system memory on SUSE
43b441f9a3 removed a bunch of code which the SUSE
builds were relying on to avoid OOM. This commit brings back that code in
a much-streamlined form: the SUSE-specific %limit_build macro.

This also has the advantage of not breaking the build on older RPMs which only
know about %_smp_mflags, and not the newer %_smp_build_ncpus etc. macros.

Fixes: 43b441f9a3
Fixes: https://tracker.ceph.com/issues/49556
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-03 15:52:04 +01:00
Nathan Cutler
a63a94714a rpm: disable parallel compression on SUSE
This code causes the Ceph build in OBS to fail due to OOM, because the typical
setting of %_smp_build_ncpus in the OBS is 16, but available memory is
insufficient to sustain such a high degree of parallelism for the in-memory
compression operation.

Fixes: b50fc9e61c
Fixes: https://tracker.ceph.com/issues/49583
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-03 15:48:05 +01:00
Nathan Cutler
f27484e84c rpm/luarocks: simplify conditional and support Leap 15.3
The luarocks conditional had gotten hard to read, and the openSUSE Leap 15.3
build needs lua53 as well.

Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-03-01 21:20:45 +01:00
Nathan Cutler
ffd202a086 rpm: re-disable SUSE lttng build on z390x
This partially reverts 2b1e646f7a which
mistakenly changed a line inside an "%if 0%{?suse_version}" conditional.

Fixes: 2b1e646f7a
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-02-25 19:16:59 +01:00
Kefu Chai
ad46841715
Merge pull request #39427 from ktdreyer/rpm-whitespace
ceph.spec.in: remove trailing whitespace

Reviewed-by: Andrew Schoen <aschoen@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
2021-02-24 17:00:04 +08:00
Kyr Shatskyy
1850dd508f ceph.spec.in: use lua53 for openSUSE 15.2
Signed-off-by: Kyr Shatskyy <kyrylo.shatskyy@suse.com>
2021-02-22 16:57:27 +01:00
Kefu Chai
e08fcf8900
Merge pull request #39552 from smithfarm/wip-49356
rpm: openSUSE Tumbleweed has lua54 now

Reviewed-by: Yuval Lifshitz <ylifshit@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
2021-02-21 19:50:20 +08:00
Jason Dillaman
963d854aba
Merge pull request #39539 from lixiaoy1/enable_pwl
cmake: enable write-back cache in spec

Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2021-02-20 12:59:04 -05:00
Kefu Chai
71aea12bac ceph.spec.in: s/%cmake/cmake/
this change partially reverts da7030db79
which use %cmake rpm macro in the place of "cmake". but

%cmake sets BUILD_SHARED_LIBS=ON. so quite a few internal libraries
defined using add_library() are now compiled into shared libraries which
are not installed or packagesd. when we are installing the rpm packages
compiled with this option, rpm compiles because the linked libraries are
missing, for instance, `libgmock.so.1.10.0` was compiled as a static
library before da7030db79, and was
included by the test executables. but after that change it's compiled
as a shared library.

so we need to either package the linked shared libraries or just link
against them statically. at this moment, the latter approach is simpler,
albeit larger size of exectuable and dbg symbols.

Fixes: https://tracker.ceph.com/issues/49395
Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-02-20 11:43:30 +08:00
lixiaoy1
a49d1dbb32 cmake: enable write-back cache in spec
Signed-off-by: Li, Xiaoyan <xiaoyan.li@intel.com>
2021-02-19 20:22:50 -05:00
Nathan Cutler
d8ee565b64 rpm: openSUSE Tumbleweed has lua54 now
Until someone figures out an easier way, we are stuck with the minor Lua version
in the package names.

Signed-off-by: Nathan Cutler <ncutler@suse.com>
2021-02-19 09:58:51 +01:00
Kefu Chai
0c079852cd
Merge pull request #39506 from tchaikov/wip-rpm-multi-thread-xz
ceph.spec.in: use multi-threaded xz compression and cleanups

Reviewed-by: David Galloway <dgallowa@redhat.com>
2021-02-18 09:32:27 +08:00
Kefu Chai
144bf31087 ceph.spec.in: use %make_install macro
hide buildroot in the implementation of this macro

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-02-17 21:06:18 +08:00
Kefu Chai
0e511973f7 ceph.spec.in: use %make_build instead of "make"
so we can hide the `_smp_mflags` in `%make_build` macro

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-02-17 21:06:18 +08:00
Kefu Chai
43b441f9a3 ceph.spec.in: use a macro helper to limit number of jobs
so it can work with the rpm macros better.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-02-17 21:06:18 +08:00