Viewing: Makefile.pkg-deb
# SPDX-License-Identifier: GPL-2.0
#
# This file is part of Lustre, http://www.lustre.org/
#
debs_common:
@export SRC_GIT_HASH=$$(git log --oneline | head -1 | cut -d' ' -f1)
rm -f /usr/src/lustre-$${SRC_GIT_HASH}.tar.bz2
if test -f /usr/src/lustre-$${SRC_GIT_HASH}.tar.bz2; then
echo "************************************************************"
echo "WARNING: move or remove /usr/src/lustre-$${SRC_GIT_HASH}.tar.bz2"
echo "************************************************************"
exit 1
fi
#
# In the debs target, first make sure what's in the changelog reflects
# the software version.
#
debs: debs_common
@cp -v debian/changelog.in debian/changelog
export SRC_GIT_HASH=$$(git log --oneline | head -1 | cut -d' ' -f1)
lversion=$$(echo $(VERSION) | tr '_' '-')
cversion=$$(sed -ne '1s/^lustre (\(.*\)-[0-9][0-9]*).*$$/\1/p' debian/changelog)
if [ "$$lversion" != "$$cversion" ]; then
echo -e "1i\nlustre ($$lversion-1) unstable; urgency=low\n\n * Automated changelog entry update\n\n -- Andreas Dilger <adilger@thelustrecollective.com> $$(date -R)\n\n.\nwq" | ed debian/changelog
fi
rm -rf debs
if test "x$(ENABLE_SERVER)" = "xyes"; then
DEB_BUILD_PROFILES="server"
else
DEB_BUILD_PROFILES="client"
fi
if test "x$(ENABLE_LDISKFS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} ldiskfs"
fi
if test "x$(ENABLE_ZFS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} zfs"
export SPL_SRC="$(SPL)"
export ZFS_SRC="$(ZFS)"
echo "ZFS support is enabled. Will expect pre-compiled SPL and ZFS sources in:"
echo "SPL: $${SPL_SRC}"
echo "ZFS: $${ZFS_SRC}"
fi
if test "x$(ENABLE_MULTIPLE_LNDS)" != "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} multiple-lnds"
fi
if test "x$(ENABLE_GNI)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} gnilnd"
fi
if test "x$(KFILND)" = "xkfilnd"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} kfilnd"
fi
if test "x$(DPKG_EXT_O2IB)" != "x"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} ext_o2ib"
export O2IB_SRC="$(EXT_O2IBPATH)"
fi
if test "x$(DPKG_INT_O2IB)" != "x"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} int_o2ib"
fi
if test "x$(EFALND)" != "x"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} efalnd"
fi
if test "x$(CONFIG_CACHE_FILE)" != "x"; then
export CONFIG_CACHE_FILE="$(CONFIG_CACHE_FILE)"
fi
debiantmp=$$(mktemp -t $${BUILDDIR:+-p $$BUILDDIR} -d debbuild-$$USER-XXXXXXXX)
cp debian/control.main $$debiantmp/control.main.bkp
cp debian/control.modules.in $$debiantmp/control.modules.in.bkp
if test "x$(ENABLE_GSS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} gss"
sed -i "s+^\(Build-Depends: .*\)$$+\1, libkrb5-dev, libssl-dev+" debian/control.main
awk 'BEGIN{change=0} $$1 == "Package:" {if (($$2 == "lustre-client-utils") || ($$2 == "lustre-server-utils")) change=1; else change=0; fi } {if (($$1 == "Depends:") && change) print $$0 ", libgssapi-krb5-2, libkrb5-3, libssl1.1|libssl3"; else print; fi}' debian/control.main > $$debiantmp/control.main && mv $$debiantmp/control.main debian/control.main
sed -i "s+^\(Build-Depends: .*\)$$+\1, libkrb5-dev, libssl-dev+" debian/control.modules.in
elif test "x$(ENABLE_GSS)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nogss"
fi
if test "x$(ENABLE_MPITESTS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} mpitests"
elif test "x$(ENABLE_MPITESTS)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nompitests"
sed -i -e 's/mpi-default-dev,//' -e 's/mpi-default-bin,//' debian/control.main
fi
if test "x$(ENABLE_TESTS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} tests"
elif test "x$(ENABLE_TESTS)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} notests"
sed -i -e 's/mpi-default-dev,//' -e 's/mpi-default-bin,//' debian/control.main
fi
if test "x$(ENABLE_COVERAGE)" = "xy"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} coverage"
fi
if test "x$(ENABLE_IOKIT)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} iokit"
elif test "x$(ENABLE_IOKIT)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} noiokit"
fi
if test "x$(ENABLE_UTILS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} utils"
elif test "x$(ENABLE_UTILS)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} noutils"
fi
if test "x$(ENABLE_CRYPTO)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} crypto"
elif test "x$(ENABLE_CRYPTO)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nocrypto"
fi
if test "x$(systemdsystemunitdir)" != "x"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} systemd"
export SYSTEMD_OPTIONS="--with-systemdsystemunitdir=$(systemdsystemunitdir)"
fi
if test "x$(ENABLE_PINGER)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} pinger"
elif test "x$(ENABLE_PINGER)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nopinger"
fi
if test "x$(ENABLE_CHECKSUM)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} checksum"
elif test "x$(ENABLE_CHECKSUM)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nochecksum"
fi
if test "x$(ENABLE_FLOCK)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} flock"
elif test "x$(ENABLE_FLOCK)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} noflock"
fi
if test "x$(ENABLE_LRU_RESIZE)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} lru-resize"
elif test "x$(ENABLE_LRU_RESIZE)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nolru-resize"
fi
if test "x$(ENABLE_MINDF)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} mindf"
elif test "x$(ENABLE_MINDF)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nomindf"
fi
if test "x$(ENABLE_FAIL_ALLOC)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} fail-alloc"
elif test "x$(ENABLE_FAIL_ALLOC)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nofail-alloc"
fi
if test "x$(ENABLE_INVARIANTS)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} invariants"
elif test "x$(ENABLE_INVARIANTS)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} noinvariants"
fi
if test "x$(ENABLE_LU_REF)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} lu_ref"
elif test "x$(ENABLE_LU_REF)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nolu_ref"
fi
if test "x$(ENABLE_PGSTAT_TRACK)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} pgstate-track"
elif test "x$(ENABLE_PGSTAT_TRACK)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nopgstate-track"
fi
if test "x$(ENABLE_LIBCFS_CDEBUG)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} libcfs-cdebug"
elif test "x$(ENABLE_LIBCFS_CDEBUG)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nolibcfs-cdebug"
fi
if test "x$(ENABLE_LIBCFS_TRACE)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} libcfs-trace"
elif test "x$(ENABLE_LIBCFS_TRACE)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nolibcfs-trace"
fi
if test "x$(ENABLE_LIBCFS_ASSERT)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} libcfs-assert"
elif test "x$(ENABLE_LIBCFS_ASSERT)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nolibcfs-assert"
fi
if test "x$(ENABLE_PANIC_DUMPLOG)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} panic_dumplog"
elif test "x$(ENABLE_PANIC_DUMPLOG)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nopanic_dumplog"
fi
if test "x$(ENABLE_READLINE)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} readline"
elif test "x$(ENABLE_READLINE)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} noreadline"
fi
if test "x$(ENABLE_LIBPTHREAD)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} libpthread"
elif test "x$(ENABLE_LIBPTHREAD)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nolibpthread"
fi
if test "x$(ENABLE_BACKOFF)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} backoff"
elif test "x$(ENABLE_BACKOFF)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} nobackoff"
fi
if test "x$(ENABLE_EFENCE)" = "xyes"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} efence"
elif test "x$(ENABLE_EFENCE)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} noefence"
fi
if test "x$(ENABLE_TESTS)" = "xno"; then
export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} notests"
fi
export KERNEL_OBJ="$(LINUX_OBJ)"
export KERNEL_SRC="$(LINUX)"
echo "Enabled Build Profiles: $${DEB_BUILD_PROFILES}"
echo "Kernel Source: $${KERNEL_SRC}"
echo "Kernel Object: $${KERNEL_OBJ}"
if test "x$(ENABLEO2IB)" = "xno"; then
export IB_OPTIONS="--with-o2ib=no"
else
if test "x$(ENABLEO2IB)" != "xyes" && \
test -n "$(EXT_O2IBPATH)"; then
export IB_OPTIONS="--with-o2ib=$(EXT_O2IBPATH)"
else
export IB_OPTIONS="--with-o2ib=yes"
fi
fi
cp -v debian/control.main debian/control
sed "s/_KVERS_/$(LINUXRELEASE)/g" debian/lustre-tests.install.in \
> debian/lustre-tests.install
tmpprofiles=`tr ' ' ',' <<< $$DEB_BUILD_PROFILES`
ignores="-I -I.git"
if test -s .gitignore; then
ignores+=$$(grep -E -v "^#|^$$" .gitignore | sed -e 's/^/ -I/')
fi
ignores+=" -I.\*.cmd -Iconftest.\* -IKbuild -I\*.[adios] -I\*.[kls][ao] "
ignores+=" -I\*.mod -I.\*.d -I\*.tar.gz -I\*.out[0-9]\* -I\*.sw[opq] "
dpkg-buildpackage -us -uc $$ignores -P$$tmpprofiles || {
rc=$${PIPESTATUS[0]}
cp $$debiantmp/control.main.bkp debian/control.main || true
cp $$debiantmp/control.modules.in.bkp debian/control.modules.in || true
[ $${rc} -gt 1 ] && exit $${rc}
exit 0
}
cp $$debiantmp/control.main.bkp debian/control.main || true &&
cp $$debiantmp/control.modules.in.bkp debian/control.modules.in || true &&
export KPKG_DEST_DIR="$$(pwd)/.." &&
version=$$(sed -ne '1s/^lustre (\(.*\)).*$$/\1/p' debian/changelog) &&
rm -rf debian/tmp/modules-deb &&
mkdir debian/tmp/modules-deb &&
pushd debian/tmp/modules-deb &&
dpkg -x ../../../../lustre-source_$${version}_all.deb $$(pwd) &&
mkdir usr_src/ &&
tar -C usr_src/ -xjf usr/src/lustre-$${SRC_GIT_HASH}.tar.bz2 &&
chmod 755 usr_src/modules/lustre/debian/rules &&
mkdir -p usr_share_modass &&
ln -s /usr/share/modass/include/ usr_share_modass/ &&
ln -s /usr/share/modass/packages/ usr_share_modass/ &&
echo "lustre" > usr_share_modass/compliant.list &&
export MA_DIR=$$(pwd)/usr_share_modass &&
KVERS=$${KVERS:-$(LINUXRELEASE)} &&
export KSRC_TREE=$(LINUX) &&
KSRC=$${KSRC:-$(LINUX_OBJ)} &&
TARBALL=$$(realpath usr/src/lustre-$${SRC_GIT_HASH}.tar.bz2) \
CC=$(CC) RELAX_CC_CHECK=$(CC) \
m-a build $${KSRC:+-k $$KSRC} $${KVERS:+-l $$KVERS} -i -u $$(pwd) lustre &&
popd &&
VER=$$(sed -ne '1s/^lustre (\(.*-[0-9][0-9]*\)).*$$/\1/p' debian/changelog) &&
if test "x$(ENABLE_SERVER)" = "xyes"; then
DEB_SERVER_PKG="../lustre-resource-agents_$${VER}_*.deb"
fi &&
MULTILNDPKGS= &&
if test "x$(ENABLE_MULTIPLE_LNDS)" != "xno"; then
debian/repackage-multiple-lnds.sh $${KVERS} $${VER} ../lustre-*-modules-$${KVERS}_$${VER}_*.deb
MULTILNDPKGS="../lustre-lnet-module-*-$${KVERS}_$${VER}_*.deb"
fi &&
mkdir -p debs &&
mv ../lustre-dev_$${VER}_*.deb ../lustre-source_$${VER}_all.deb \
../lustre-iokit_$${VER}_*.deb ../lustre-tests_$${VER}_*.deb \
../lustre-coverage_$${VER}_*.deb \
../lustre-*-utils_$${VER}_*.deb $${DEB_SERVER_PKG} $${MULTILNDPKGS} \
../lustre_$${VER}.dsc ../lustre_$${VER}_*.changes \
../lustre_$${VER}.tar.gz ../lustre-*-modules-$${KVERS}_$${VER}_*.deb \
../lustre-*-dbgsym_$${VER}_*.ddeb ../lustre_$${VER}_*.buildinfo \
../lustre-*-dbgsym_$${VER}_*.deb \
debs/ 2> /dev/null || true