From 9ab2ce377461b7da0bd93989bbc9b5fbbdf89038 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Wed, 27 Nov 2024 16:26:22 +0100 Subject: [PATCH] Fix DEB target and its build script. The package building now requires the program fakeroot, which allows building the deb file without sudo. Setuid should be packaged correctly. --- .gitignore | 3 +++ Makefile | 5 +++-- packaging/deb/package.sh | 41 ++++++++++++++++++++++------------------ 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index e3ceeffff..799cd9f36 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ doc/html # core dumps /core + +# generated packages +/*.deb diff --git a/Makefile b/Makefile index 3452b73e9..a34d37234 100644 --- a/Makefile +++ b/Makefile @@ -849,9 +849,10 @@ help: .PHONY: rpm RPM rpm: RPM RPM: packaging/rpm/likwid.spec - $(BASE_DIR)/packaging/deb/package.sh + FROM_MAKEFILE=1 $(BASE_DIR)/packaging/rpm/package.sh .PHONY: deb DEB deb: DEB DEB: packaging/deb/likwid.deb.control - $(BASE_DIR)/packaging/rpm/package.sh + NAME=$(NAME) VERSION=$(VERSION) RELEASE=$(RELEASE) MINOR=$(MINOR) \ + PREFIX=$(PREFIX) FROM_MAKEFILE=1 $(BASE_DIR)/packaging/deb/package.sh diff --git a/packaging/deb/package.sh b/packaging/deb/package.sh index c2ee08a4f..d06efc8f0 100755 --- a/packaging/deb/package.sh +++ b/packaging/deb/package.sh @@ -2,40 +2,45 @@ set -eu +if [ $(id -u) -ne 0 ]; then + exec fakeroot "$0" "$@" +fi + if [ -z ${FROM_MAKEFILE+1} ]; then echo "$0 is not intended to be run manually. Please run 'make RPM' instead." exit 1 fi -BASEDIR=${PWD} +LIKWID_DIR=${PWD} WORKSPACE=${PWD}/.dpkgbuild -DEBIANDIR=${WORKSPACE}/debian -DEBIANBINDIR=${WORKSPACE}/DEBIAN -mkdir --parents --verbose ${WORKSPACE} ${DEBIANBINDIR} -make PREFIX=${WORKSPACE} INSTALLED_PREFIX=${PREFIX} -#mkdir --parents --verbose ${DEBIANDIR} -CONTROLFILE="${BASEDIR}/packaging/deb/likwid.deb.control" +DEBIANDIR=${WORKSPACE}/DEBIAN +mkdir --parents --verbose "${WORKSPACE}" "${DEBIANDIR}" +make distclean +make "PREFIX=${WORKSPACE}" "INSTALLED_PREFIX=${PREFIX}" --jobs "$(nproc)" +CONTROLFILE="${LIKWID_DIR}/packaging/deb/likwid.deb.control" COMMITISH="HEAD" -VERS=$(git describe --tags --abbrev=0 ${COMMITISH}) +VERS=$(git describe --tags --abbrev=0 "${COMMITISH}") VERS=${VERS#v} -VERS=$(echo ${VERS} | sed -e s/-/_/g) +VERS=$(echo "${VERS}" | sed -e s/-/_/g) ARCH=$(uname -m) -ARCH=$(echo ${ARCH} | sed -e s/-/_/g) -if [ "${ARCH}" = "x86-64" ]; then +ARCH=$(echo "${ARCH}" | sed -e s/-/_/g) + +if [ "${ARCH}" = "x86_64" ]; then ARCH=amd64 fi + if [ "${VERS}" = "" ]; then - VERS="$(VERSION).$(RELEASE).$(MINOR)" + VERS="${VERSION}.${RELEASE}.${MINOR}" fi + PREFIX="${NAME}-${VERSION}_${ARCH}" SIZE_BYTES=$(du -bcs --exclude=.dpkgbuild "$WORKSPACE"/ | awk '{print $1}' | head -1 | sed -e 's#^0\+##') SIZE="$(awk -v size="${SIZE_BYTES}" 'BEGIN {print (size/1024)+1}' | awk '{print int($0)}')" -#sed -e s#"{VERSION}"#"$VERS"#g -e s#"{INSTALLED_SIZE}"#"$SIZE"#g -e s#"{ARCH}"#"$ARCH"#g ${CONTROLFILE} > ${DEBIANDIR}/control -sed -e s#"{VERSION}"#"${VERS}"#g -e s#"{INSTALLED_SIZE}"#"${SIZE}"#g -e s#"{ARCH}"#"${ARCH}"#g ${CONTROLFILE} > ${DEBIANBINDIR}/control -sudo make PREFIX=${WORKSPACE} INSTALLED_PREFIX=${PREFIX} install +sed -e "s/{VERSION}/${VERS}/g" -e "s/{INSTALLED_SIZE}/${SIZE}/g" -e "s/{ARCH}/${ARCH}/g" "${CONTROLFILE}" > "${DEBIANDIR}/control" +make "PREFIX=${WORKSPACE}" "INSTALLED_PREFIX=${PREFIX}" install DEB_FILE="likwid_${VERS}_${ARCH}.deb" -dpkg-deb -b ${WORKSPACE} "${DEB_FILE}" -sudo rm -r "${WORKSPACE}" -if [ "${GITHUB_ACTIONS}" = "true" ]; then +dpkg-deb -b "${WORKSPACE}" "${DEB_FILE}" +rm -r "${WORKSPACE}" +if [ "${GITHUB_ACTIONS:-false}" = "true" ]; then echo "::set-output name=DEB::${DEB_FILE}" fi