Skip to content

Commit

Permalink
Fix DEB target and its build script.
Browse files Browse the repository at this point in the history
The package building now requires the program fakeroot, which allows
building the deb file without sudo. Setuid should be packaged correctly.
  • Loading branch information
ipatix committed Nov 27, 2024
1 parent 8f36674 commit 9ab2ce3
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 20 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ doc/html

# core dumps
/core

# generated packages
/*.deb
5 changes: 3 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
41 changes: 23 additions & 18 deletions packaging/deb/package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 9ab2ce3

Please sign in to comment.