summaryrefslogtreecommitdiffstats
path: root/tests/aux/opk.sh
blob: a74ecfdc9baab1a297bce3d2b4f33b5dfec4d84c (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
# This file is part of the ProteanOS Archive Manager.
#
# The ProteanOS Archive Manager 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.
#
# The ProteanOS Archive Manager 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 the ProteanOS Archive Manager.  If not, see
# <http://www.gnu.org/licenses/>.

make_opks_and_changes()
{
	local src="${1}"
	local bins="${2}"
	local ver="${3}"
	local arch="${4}"
	local plat="${5}"
	local dist="${6}"
	local sect="${7}"
	shift 7
	local bin=
	local changes=
	local file=

	# Make packages.
	for bin in ${bins}; do
		mkdir -p "${bin}_${ver}_${arch}_${plat}/control/"
		cat >"${bin}_${ver}_${arch}_${plat}/control/control" <<-EOF
			Package: ${bin}
			Source: ${src}
			Version: ${ver}
			Architecture: ${arch}
			Platform: ${plat}
			Maintainer: "J. Random Hacker" $(: Newline
				)<jrandom@example.com>
			EOF
		(cd "${bin}_${ver}_${arch}_${plat}/control/" && \
			tar -czf '../control.tar.gz' '.')
		rm -f "${bin}_${ver}_${arch}_${plat}/control/control"
		rmdir "${bin}_${ver}_${arch}_${plat}/control/"
		(cd "${bin}_${ver}_${arch}_${plat}/" && \
			tar -czf "../${bin}_${ver}_${arch}_${plat}.opk" \
			'control.tar.gz')
		rm -f "${bin}_${ver}_${arch}_${plat}/control.tar.gz"
		rmdir "${bin}_${ver}_${arch}_${plat}/"
	done

	# Write changes file.
	changes="${src}_${ver}_${arch}_${plat}.changes"
	cat >"${changes}" <<-EOF
		Format: 1.0
		Source: ${src}
		Binary: ${bins}
		Version: ${ver}
		Architecture: ${arch}
		Platform: ${plat}
		Distribution: ${dist}
		Maintainer: "J. Random Hacker" <jrandom@example.com>
		Changed-By: "J. Random Hacker" <jrandom@example.com>
		Date: $(LC_ALL='POSIX' date '+%a, %d %b %Y %H:%M:%S %z')
		Description:
		EOF
	for bin in ${bins}; do
		printf ' %s - %s package\n' "${bin}" "${bin}" \
			>>"${changes}"
	done
	cat >>"${changes}" <<-EOF
		Changes:
		 ${src} (${ver}) ${dist}
		 .
		   * Reticulated splines.
		Files:
		EOF
	for bin in ${bins}; do
		file="${bin}_${ver}_${arch}_${plat}.opk"
		printf ' %s %s %s\n' $(wc -c "${file}" | cut -d ' ' -f 1) \
			"${sect}" "${file}" >>"${changes}"
	done

	printf '%s' "${changes}"
}