blob: 5b66c3f6d4f621ebe9857b22c67213df7267dcff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#!/bin/bash
repo_clean() {
git reset --hard
git clean -d -f -q -x
}
repo_update() {
git fetch origin
git fetch upstream
git checkout upstream
git merge upstream/master
git checkout master
if [ -z "$(git log master..upstream)" -a -z "$(git log master..origin/master)" ] ; then
echo 'No source changes => skipping build'
return 1
fi
git tag -f pre-merge master
git merge origin/master
git merge upstream
}
append_git_changelog() {
local range="${1}"
git log --no-merges --pretty=format:'[%h] %s (%an)' "${range}" |xargs -L 1 -d '\n' --no-run-if-empty dch --no-auto-nmu --no-multimaint
}
version_set() {
local upstream_version="$(git tag|grep ^v|tr -d v|sort -t . -n|tail -n 1)"
local pkg_name="$(grep ^Source: debian/control.in |head -n 1 |sed -e 's/^Source: *//')"
cat - debian/changelog > debian/changelog.tmp << EOT
${pkg_name} (${upstream_version}-git$(date +%Y%m%d)-1) testing; urgency=low
* Nightly snapshot package
-- maintainer <foo@bar.com> $(date -R)
EOT
mv debian/changelog.tmp debian/changelog
append_git_changelog pre-merge..master
git commit -m "Add changelog entry for nightly snapshot build" debian/changelog
}
gen_and_import_tarball() {
local package="${1}"
git checkout upstream
./autogen.sh
make dist-gzip
local version="$(grep '^VERSION = ' Makefile |sed -e 's/^VERSION = //')"
mv "${package}-${version}".tar.gz ../tarballs/"${package}-${version}~git$(date +%Y%m%d).tar.gz"
repo_clean
git-import-orig "${package}-${version}".tar.gz
}
autoregen() {
if [ -x autogen.sh ] ; then
./autogen.sh
else
grep -q IT_PROG_INTLTOOL configure.ac && intltoolize -c
autoreconf -i
automake
fi
if [ -n "$(git status --porcelain --untracked-files=no)" ] ; then
git commit -a -m "regenerate autofoo"
fi
}
build() {
git-buildpackage --git-builder="pdebuild --configfile ${MYDIR}/pbuilderrc --debbuildopts '-I.git -i\.git'" --git-cleaner="fakeroot debian/rules clean" --git-no-pristine-tar --git-export-dir=../build
}
upload_all() {
"${MYDIR}"/upload-snapshots
}
package_apply() {
local package="${1}"
shift
( set -e ; cd "${package}" ; "$@" )
}
MYDIR="$(readlink -f "$(dirname "${0}")")"
export COWBUILDERBASE="${MYDIR}/cowbuilder"
export DISTRIBUTION="$(tr -cd A-Za-z0-9._- < "${MYDIR}"/config.distro)"
. "${MYDIR}/packages.conf"
for package_info in ${PACKAGES} ; do
(
set -e
parse_package_info "${package_info}"
package_apply "${debian_name}" repo_clean
package_apply "${debian_name}" repo_update
package_apply "${debian_name}" autoregen
package_apply "${debian_name}" version_set
package_apply "${debian_name}" build
# package_apply "${debian_name}" upload
)
done
upload_all
|