summaryrefslogtreecommitdiffstats
path: root/src/3/ppt-mkpkgs
blob: 20ee33ffef15cb5383f0720bdfef69b5a63ff67e (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
101
102
#!/bin/sh

set -eu

PLAT=

info()
{
	local fmt="${1}"
	shift 1

	printf "ppt-mkpkgs: ${fmt}\n" "${@}"
}

make_common_pkg()
{
	# Make "-common" package to provide source package documentation files.
	mkdir -p "config-${PLAT}-common.pkg"
	cat >"config-${PLAT}-common.pkg/control" <<-EOF
		# Generated by ppt-mkpkgs.  Do not edit.
		Architecture: all
		Platform: all
		Description: "${PLAT}" platform configuration - common files
		EOF
	>"config-${PLAT}-common.pkg/docs"
	info 'Metadata for package "%s" generated.' "config-${PLAT}-common"
}

make_base_pkg()
{
	# Make a "config-base" package to depend on packages to be automatically
	# installed.
	mkdir -p "config-base.pkg"
	cat >"config-base.pkg/control" <<-EOF
		# Generated by ppt-mkpkgs.  Do not edit.
		Architecture: all
		Platform: ${PLAT}
		Essential: yes
		Depends: config-${PLAT}-common (= \${Binary-Version}),
		 \${Config-Base-Depends}
		Description: "${PLAT}" platform configuration - base package
		EOF
	info 'Metadata for package "%s" generated.' "config-base"
}

make_build_time_pkgs()
{
	local pkg_ver=
	local pkg=

	# Make each config-*-* package.
	for pkg_ver in src/build/*; do
		[ -d "${pkg_ver}" ] || continue
		pkg_ver="${pkg_ver#src/build/}"
		pkg="${pkg_ver%_*}"
		mkdir -p "config-${pkg}-${PLAT}.pkg"
		cat >"config-${pkg}-${PLAT}.pkg/control" <<-EOF
			# Generated by ppt-mkpkgs.  Do not edit.
			Architecture: all
			Platform: all
			Depends: config-${PLAT}-common (= \${Binary-Version}),
			 \${Config-${pkg}-Depends}
			Description: "${PLAT}" platform configuration for ${pkg}
			EOF
		info 'Metadata for package "%s" generated.' \
			"config-${pkg}-${PLAT}"
	done
}

make_run_time_pkgs()
{
	local pkg=

	# Make each config-* package.
	for pkg in src/run/*; do
		[ -d "${pkg}" ] || continue
		pkg="${pkg#src/run/}"
		mkdir -p "config-${pkg}.pkg"
		cat >"config-${pkg}.pkg/control" <<-EOF
			# Generated by ppt-mkpkgs.  Do not edit.
			Architecture: all
			Platform: ${PLAT}
			Depends: config-${PLAT}-common (= \${Binary-Version}),
			 \${Config-${pkg}-Depends}
			Description: "${PLAT}" platform configuration for ${pkg}
			EOF
		info 'Metadata for package "%s" generated.' \
			"config-${pkg}"
	done
}

main()
{
	PLAT="$(sed '1{s/^config-\([^ ][^ ]*\) (.*$/\1/;};1!q;' changelog)"

	make_common_pkg
	make_base_pkg
	make_build_time_pkgs
	make_run_time_pkgs
}

main "${@}"