From b70b81650a8bf5d06add446147f5402420b47149 Mon Sep 17 00:00:00 2001 From: Phillip Berndt Date: Mon, 19 Sep 2016 14:32:20 +0200 Subject: [PATCH] Added Makefile target to create a deb archive This largely ignores all Debian packaging standards, and simply creates a Debian package which contains the files that would be installed if the user typed `sudo make install' on his (Debian) system. --- Makefile | 29 +++++++++----- contrib/packaging/debian/debian/control | 14 +++++++ contrib/packaging/debian/make_deb.sh | 50 +++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 9 deletions(-) create mode 100644 contrib/packaging/debian/debian/control create mode 100755 contrib/packaging/debian/make_deb.sh diff --git a/Makefile b/Makefile index 10570e4..65d4708 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,10 @@ all: @echo "The following components were autodetected and will be installed:" @echo " "$(DEFAULT_TARGETS) @echo "You can use the TARGETS variable to override, e.g. \"make install TAGETS='autorandr pmutils'\"." + @echo + @echo "The following additional targets are available:" + @echo + @echo " make deb creates a Debian package" # Rules for autorandr itself DEFAULT_TARGETS=autorandr @@ -21,49 +25,53 @@ uninstall_autorandr: rm -f ${DESTDIR}${PREFIX}/bin/autorandr # Rules for bash_completion +BASH_COMPLETION_DIR=/etc/bash_completion.d HAVE_BASH_COMPLETION=$(shell [ -d /etc/bash_completion.d/ ] && echo "y") ifeq ($(HAVE_BASH_COMPLETION),y) DEFAULT_TARGETS+=bash_completion endif install_bash_completion: - install -D -m 644 contrib/bash_completion/autorandr ${DESTDIR}/etc/bash_completion.d/autorandr + install -D -m 644 contrib/bash_completion/autorandr ${DESTDIR}/${BASH_COMPLETION_DIR}/autorandr uninstall_bash_completion: - rm -f ${DESTDIR}/etc/bash_completion.d/autorandr + rm -f ${DESTDIR}/${BASH_COMPLETION_DIR}/autorandr # Rules for pmutils +PM_UTILS_DIR=/etc/pm/sleep.d HAVE_PMUTILS=$(shell [ -x /usr/sbin/pm-suspend ] && echo "y") ifeq ($(HAVE_PMUTILS),y) DEFAULT_TARGETS+=pmutils endif install_pmutils: - install -D -m 755 contrib/pm-utils/40autorandr ${DESTDIR}/etc/pm/sleep.d/40autorandr + install -D -m 755 contrib/pm-utils/40autorandr ${DESTDIR}/${PM_UTILS_DIR}/40autorandr uninstall_pmutils: - rm -f ${DESTDIR}/etc/pm/sleep.d/40autorandr + rm -f ${DESTDIR}/${PM_UTILS_DIR}/40autorandr # Rules for systemd +SYSTEMD_UNIT_DIR=/etc/systemd/system/ HAVE_SYSTEMD=$(shell grep -q systemd /proc/1/comm && echo "y") ifeq ($(HAVE_SYSTEMD),y) DEFAULT_TARGETS+=systemd endif install_systemd: - install -D -m 644 contrib/systemd/autorandr-resume.service ${DESTDIR}/etc/systemd/system/autorandr-resume.service + install -D -m 644 contrib/systemd/autorandr-resume.service ${DESTDIR}/${SYSTEMD_UNIT_DIR}/autorandr-resume.service uninstall_systemd: - rm -f ${DESTDIR}/etc/systemd/system/autorandr-resume.service + rm -f ${DESTDIR}/${SYSTEMD_UNIT_DIR}/autorandr-resume.service # Rules for udev -HAVE_UDEV=$(shell [ -d /etc/udev/rules.d/ ] && echo "y") +UDEV_RULES_DIR=/etc/udev/rules.d +HAVE_UDEV=$(shell [ -d "${UDEV_RULES_DIR}" ] && echo "y") ifeq ($(HAVE_UDEV),y) DEFAULT_TARGETS+=udev endif install_udev: - install -D -m 644 contrib/udev/40-monitor-hotplug.rules ${DESTDIR}/etc/udev/rules.d/40-monitor-hotplug.rules + install -D -m 644 contrib/udev/40-monitor-hotplug.rules ${DESTDIR}/${UDEV_RULES_DIR}/40-monitor-hotplug.rules ifeq (${USER},root) udevadm control --reload-rules else @@ -72,9 +80,12 @@ else endif uninstall_udev: - rm -f ${DESTDIR}/etc/udev/rules.d/40-monitor-hotplug.rules + rm -f ${DESTDIR}/${UDEV_RULES_DIR}/40-monitor-hotplug.rules TARGETS=$(DEFAULT_TARGETS) install: $(patsubst %,install_%,$(TARGETS)) uninstall: $(patsubst %,uninstall_%,$(TARGETS)) + +deb: + ./contrib/packaging/debian/make_deb.sh diff --git a/contrib/packaging/debian/debian/control b/contrib/packaging/debian/debian/control new file mode 100644 index 0000000..7fb2be8 --- /dev/null +++ b/contrib/packaging/debian/debian/control @@ -0,0 +1,14 @@ +Package: autorandr +Version: 1.0 +Section: x11 +Priority: optional +Maintainer: Phillip Berndt +Build-Depends: debhelper (>=9) +Standards-Version: 3.9.6 +Homepage: https://github.com/phillipberndt/autorandr +Architecture: all +Depends: x11-xserver-utils, python +Description: Automatically select a display configuration for connected devices + Autorandr is a script for managing xrandr configurations based on the + connected devices. It can be set up to automatically switch to a stored + configuration whenever a change in the configuration is detected. diff --git a/contrib/packaging/debian/make_deb.sh b/contrib/packaging/debian/make_deb.sh new file mode 100755 index 0000000..404aaef --- /dev/null +++ b/contrib/packaging/debian/make_deb.sh @@ -0,0 +1,50 @@ +#!/bin/sh +# + +# Determine version +if git rev-parse --git-dir >/dev/null 2>&1; then + V="$(git describe --tags 2>/dev/null)" + if [ "$?" -ne 0 ]; then + V=0.1 + fi +else + V=0.1 +fi + +# Create/determine working directory +P="`dirname $(readlink -f "$0")`" +LD="autorandr-$V" +D="$P/$LD" +O="`pwd`/$LD.deb" + +if [ -d "$D" ]; then + echo "Directory $D does already exist. Aborting.." + exit 1 +fi + +# Error handling: On error, abort and clear $D +_cleanup() { + rm -rf "$D" +} +trap _cleanup EXIT +set -e + +mkdir $D + +# Debian(ish) specific part +make -C "$P/../../../" \ + DESTDIR="$D" \ + TARGETS="autorandr bash_completion pmutils systemd udev" \ + BASH_COMPLETION_DIR=/usr/share/bash-completion/completions \ + SYSTEMD_UNIT_DIR=/lib/systemd/system \ + PM_UTILS_DIR=/usr/lib/pm-utils/sleep.d \ + UDEV_RULES_DIR=/lib/udev/rules.d/ \ + install + +SIZE=$(du -s $D | awk '{print $1}') + +cp -r "$P/debian" "$D/DEBIAN" +[ -d "$D/etc" ] && (cd $D; find etc) > "$D/DEBIAN/conffiles" +sed -i -re "s#Version:.+#Version: $V#" "$D/DEBIAN/control" +echo "Installed-Size: $SIZE" >> "$D/DEBIAN/control" +fakeroot dpkg-deb -b "$D" "$O" -- 2.39.2