debian: Add packaging

This commit is contained in:
dsx
2017-02-21 15:57:06 -05:00
committed by James Shubin
parent 8fb0373f82
commit 94c8bc1de9
11 changed files with 164 additions and 0 deletions

1
.gitignore vendored
View File

@@ -12,3 +12,4 @@ mgmt.static
mgmt-*
mgmt.iml
rpmbuild/
*.deb

View File

@@ -290,4 +290,16 @@ upload-rpms: rpmbuild/RPMS/ rpmbuild/RPMS/SHA256SUMS rpmbuild/RPMS/SHA256SUMS.as
copr: upload-srpms
./misc/copr-build.py https://$(SERVER)/$(REMOTE_PATH)/SRPMS/$(SRPM_BASE)
#
# deb build
#
deb:
./misc/gen-deb-changelog-from-git.sh
dpkg-buildpackage
# especially when building in Docker container, pull build artifact in project directory.
cp ../mgmt_*_amd64.deb ./
# cleanup
rm -rf debian/mgmt/
# vim: ts=8

7
debian/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
*.debhelper.log
*debhelper
changelog
debhelper-build-stamp
files
mgmt.substvars
mgmt/*

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
9

16
debian/control vendored Normal file
View File

@@ -0,0 +1,16 @@
Source: mgmt
Maintainer: Johan Bloemberg (aequitas) <mgmt@ijohan.nl>
Build-Depends:
debhelper,
devscripts,
dh-golang,
dh-systemd,
golang-go,
Package: mgmt
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: mgmt: next generation config management!
The mgmt tool is a next generation config management prototype. It's
not yet ready for production, but we hope to get there soon. Get
involved today!

21
debian/copyright vendored Normal file
View File

@@ -0,0 +1,21 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: mgmt
Source: <https://github.com/purpleidea/mgmt>
Files: *
Copyright: Copyright (C) 2013-2018+ James Shubin and the project contributors
License: GPL-3.0
License: GPL-3.0
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

11
debian/mgmt.docs vendored Normal file
View File

@@ -0,0 +1,11 @@
AUTHORS
COPYING
COPYRIGHT
README.md
THANKS
TODO.md
docs
examples
misc/bashrc.sh
misc/delta-cpu.sh
misc/mgmt.service

2
debian/mgmt.install vendored Normal file
View File

@@ -0,0 +1,2 @@
mgmt usr/bin
misc/mgmt.service /lib/systemd/system

15
debian/rules vendored Executable file
View File

@@ -0,0 +1,15 @@
#!/usr/bin/make -f
export DH_OPTIONS
export DH_GOPKG := mgmt
export DH_GOLANG_INSTALL_ALL := 1
unexport GOROOT
override_dh_auto_build:
make build
override_dh_auto_test:
@echo "Tests are disabled for now"
%:
dh $@ --with=systemd

View File

@@ -0,0 +1,76 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
cleanup() {
if [ -f "${tmpfile}" ]; then
rm -f "${tmpfile}"
fi
}
trap "{ cleanup; }" EXIT SIGTERM
getCommits() {
prevtag="${1}"
tag="${2}"
local -a authors
local ver="${tag}-1"
local h
echo "»»» Processing ${prevtag}..${tag}"
numCommits=$(git --no-pager rev-list --count "${prevtag}".."${tag}")
if ((numCommits>0)); then
echo " ${numCommits} commits found"
if [ "${tag}" == "HEAD" ]; then
h=$(git rev-list --max-count=1 --abbrev-commit HEAD)
ver="${prevtag}~1.${h}"
fi
echo "${pkgname} (${ver}) UNRELEASED; urgency=low" >> "${tmpfile}"
authors=($(git log --format='%aN' "${prevtag}".."${tag}" | sort | uniq))
for author in "${authors[@]}"; do
echo " Gathering commits from ${author}"
{
echo " [ ${author} ]"
git --no-pager log --author="${author}" --pretty=format:' * %s' "${prevtag}".."${tag}"
echo ""
} >> "${tmpfile}"
done
git --no-pager log -n 1 --pretty='format:%n -- %aN <%aE> %aD%n%n' "${tag}" >> "${tmpfile}"
else
echo " 0 commits found, skipping"
fi
}
if [ ! -d "debian" ]; then
echo "Directory ./debian not found"
exit 1
fi
tmpfile=$(mktemp)
firstHash=$(git rev-list --max-parents=0 HEAD) # This should yield the very first commit hash
pkgname=$(grep '^Package: ' debian/control | sed 's/^Package: //')
tags=($(git tag | sort -r -V))
echo "»»» Gathering untagged commits"
tag=${tags[0]}
untagged=$(git rev-list --count "${tag}"..HEAD)
if ((untagged>0)); then
getCommits "${tag}" HEAD
fi
for ((i=1; i<${#tags[@]}; i++)); do
tag="${tags[${i}]}"
nexttag="${tags[$((i-1))]}"
getCommits "${tag}" "${nexttag}"
done
getCommits "${firstHash}" "${tags[-1]}"
mv "${tmpfile}" debian/changelog

View File

@@ -36,6 +36,8 @@ if [ ! -z "$APT" ]; then
$sudo_command $APT install -y libvirt-dev || true
$sudo_command $APT install -y libaugeas-dev || true
$sudo_command $APT install -y libpcap0.8-dev || true
# dependencies for building debian packages with `make deb`
$sudo_command $APT install -y dpkg-dev devscripts debhelper dh-golang dh-systemd
fi
if [ ! -z "$BREW" ]; then