diff options
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..c712fd5d --- /dev/null +++ b/debian/rules @@ -0,0 +1,167 @@ +#!/usr/bin/make -f +# -*- makefile -*- +#export DH_VERBOSE=1 + +DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS) +export DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) +export DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) + +# support ccache for faster build +# cmake uses /usr/bin/c* +ifeq (yes,$(findstring yes,$(shell test -L /usr/lib/ccache/c++ && test -L /usr/lib/ccache/cc && echo -n yes))) + extraopts += -DWITH_CCACHE=ON +endif + +# try to save even more memory on some architectures +# see #849657 for hints. +# Reduce size of debug symbols to fix FTBFS due to the +# 2GB/3GB address space limits on 32bit +ifeq (32,$(DEB_HOST_ARCH_BITS)) + export DEB_CFLAGS_MAINT_APPEND = -g1 + export DEB_CXXFLAGS_MAINT_APPEND = -g1 +endif + +# we don't have NEON on armel. +ifeq ($(DEB_HOST_ARCH),armel) + extraopts += -DHAVE_ARM_NEON=0 +endif + +# disable ceph-dencoder on 32bit except i386 to avoid g++ oom +ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf hppa m68k mips mipsel powerpc sh4 x32)) + extraopts += -DDISABLE_DENCODER=1 +endif + +ifeq ($(shell dpkg-vendor --is Ubuntu && echo yes) $(DEB_HOST_ARCH), yes i386) + skip_packages = -Nceph -Nceph-base -Nceph-mds -Nceph-mgr -Nceph-mon -Nceph-osd +endif + +# minimise needless linking and link to libatomic +# The last is needed because long long atomic operations are not directly +# supported by all processor architectures +export DEB_LDFLAGS_MAINT_APPEND= -Wl,--as-needed -latomic + +# Enable hardening +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +export DESTDIR=$(CURDIR)/debian/tmp + +export JAVA_HOME=/usr/lib/jvm/default-java +## Set JAVAC to prevent FTBFS due to incorrect use of 'gcj' if found (see "m4/ac_prog_javac.m4"). +export JAVAC=javac + +extraopts += -DWITH_OCF=ON -DWITH_NSS=ON -DWITH_PYTHON3=ON -DWITH_DEBUG=ON +extraopts += -DWITH_PYTHON2=OFF -DMGR_PYTHON_VERSION=3 +extraopts += -DWITH_CEPHFS_JAVA=ON +extraopts += -DWITH_CEPHFS_SHELL=ON +extraopts += -DWITH_TESTS=OFF +extraopts += -DWITH_SYSTEM_BOOST=ON +extraopts += -DWITH_LTTNG=OFF -DWITH_EMBEDDED=OFF +extraopts += -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib +extraopts += -DWITH_MGR_DASHBOARD_FRONTEND=OFF +extraopts += -DWITH_SYSTEMD=ON -DCEPH_SYSTEMD_ENV_DIR=/etc/default +extraopts += -DCMAKE_INSTALL_SYSCONFDIR=/etc +extraopts += -DCMAKE_INSTALL_SYSTEMD_SERVICEDIR=/lib/systemd/system + +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + extraopts += -DBOOST_J=$(NUMJOBS) +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),s390x mips64el ia64 m68k ppc64 riscv64 sh4 sparc64 x32 alpha)) + # beast depends on libboost_{context,coroutine} which is not supported on s390x + extraopts += -DWITH_BOOST_CONTEXT=OFF +else + extraopts += -DWITH_BOOST_CONTEXT=ON +endif + +# Disable SPDK as it generates a build which is no compatible +# with older CPU's which are still supported by Ubuntu. +extraopts += -DWITH_SPDK=OFF + +MAX_PARALLEL ?= $(shell ./debian/calc-max-parallel.sh) + +%: + dh $@ --buildsystem=cmake --with javahelper,python3,systemd $(MAX_PARALLEL) + +override_dh_auto_configure: + env | sort + dh_auto_configure --buildsystem=cmake -- $(extraopts) + +override_dh_auto_install: + dh_auto_install --buildsystem=cmake --destdir=$(DESTDIR) + if [ ! -f $(DESTDIR)/usr/bin/ceph-dencoder ]; then \ + cp debian/workarounds/ceph-dencoder-oom $(DESTDIR)/usr/bin/ceph-dencoder ;\ + chmod 755 $(DESTDIR)/usr/bin/ceph-dencoder ;\ + fi + install -D -m 644 udev/50-rbd.rules $(DESTDIR)/lib/udev/rules.d/50-rbd.rules + install -D -m 644 src/etc-rbdmap $(DESTDIR)/etc/ceph/rbdmap + install -D -m 644 etc/sysctl/90-ceph-osd.conf $(DESTDIR)/etc/sysctl.d/30-ceph-osd.conf + install -D -m 600 sudoers.d/ceph-osd-smartctl $(DESTDIR)/etc/sudoers.d/ceph-osd-smartctl + # NOTE: ensure that any versioned erasure coding test code is dropped + # from the package install - package ships unversioned modules. + rm -f $(CURDIR)/debian/tmp/usr/lib/*/ceph/erasure-code/libec_*.so.* + find $(CURDIR)/debian/tmp/usr/lib/*/ceph/erasure-code -type l -delete || : + + +# doc/changelog is a directory, which confuses dh_installchangelogs +override_dh_installchangelogs: + dh_installchangelogs --exclude doc/changelog + +override_dh_installlogrotate: + cp src/logrotate.conf debian/ceph-common.logrotate + dh_installlogrotate -pceph-common + + +override_dh_installinit: + cp src/init-radosgw debian/radosgw.init + dh_installinit --no-start + dh_installinit -pceph-common --name=rbdmap --no-start + dh_installinit -pceph-base --name ceph --no-start + # install the systemd stuff manually since we have funny service names + # and need to update the paths in all of the files post install + # systemd:ceph-common + install -d -m0755 debian/ceph-common/usr/lib/tmpfiles.d + install -m 0644 -D systemd/ceph.tmpfiles.d debian/ceph-common/usr/lib/tmpfiles.d/ceph.conf + # NOTE(jamespage): Install previous ceph-mon service from packaging for upgrades + install -d -m0755 debian/ceph-mon/lib/systemd/system + install -m0644 debian/lib-systemd/system/ceph-mon.service debian/ceph-mon/lib/systemd/system + # Ensure Debian/Ubuntu specific systemd units are NOT automatically enabled and started + # Enable systemd targets only + dh_systemd_enable -Xceph-mon.service -Xceph-osd.service -X ceph-mds.service + # Start systemd targets only + dh_systemd_start --no-stop-on-upgrade --no-restart-after-upgrade + +override_dh_systemd_enable: + # systemd enable done as part of dh_installinit + +override_dh_systemd_start: + # systemd start done as part of dh_installinit + +override_dh_makeshlibs: + # exclude jni libraries in libcephfs-jni to avoid pointless ldconfig + # calls in maintainer scripts; exclude private erasure-code plugins. + dh_makeshlibs -V -X/usr/lib/jni -X/usr/lib/$(DEB_HOST_MULTIARCH)/ceph/erasure-code + +override_dh_auto_test: + # do not run tests + +override_dh_shlibdeps: + dh_shlibdeps -a --exclude=erasure-code --exclude=rados-classes --exclude=compressor + +override_dh_python3: + for binding in rados cephfs rbd rgw; do \ + dh_python3 -p python3-$$binding --shebang=/usr/bin/python3; \ + done + dh_python3 -p python3-ceph-argparse --shebang=/usr/bin/python3 + dh_python3 -p ceph-common --shebang=/usr/bin/python3 + dh_python3 -p ceph-base --shebang=/usr/bin/python3 + dh_python3 -p ceph-osd --shebang=/usr/bin/python3 + dh_python3 -p ceph-mgr --shebang=/usr/bin/python3 + dh_python3 -p cephfs-shell --shebang=/usr/bin/python3 + +override_dh_builddeb: + dh_builddeb ${skip_packages} + +override_dh_gencontrol: + dh_gencontrol ${skip_packages} + |