xref: /freebsd/release/scripts/make-manifest.sh (revision d3d381b2b194b4d24853e92eecef55f262688d1a)
1#!/bin/sh
2
3# make-manifest.sh: create checksums and package descriptions for the installer
4#
5#  Usage: make-manifest.sh foo1.txz foo2.txz ...
6#
7# The output file looks like this (tab-delimited):
8#  foo1.txz SHA256-checksum Number-of-files foo1 Description Install-by-default
9#
10# $FreeBSD$
11
12base="Base system"
13doc="Additional Documentation"
14kernel="Kernel"
15ports="Ports tree"
16src="System source tree"
17lib32="32-bit compatibility libraries"
18tests="Test suite"
19
20desc_base="${base} (MANDATORY)"
21desc_base_dbg="${base} (Debugging)"
22desc_doc="${doc}"
23desc_kernel="${kernel} (MANDATORY)"
24desc_kernel_dbg="${kernel} (Debugging)"
25desc_kernel_alt="Alternate ${kernel}"
26desc_kernel_alt_dbg="Alternate ${kernel} (Debugging)"
27desc_lib32="${lib32}"
28desc_lib32_dbg="${lib32} (Debugging)"
29desc_ports="${ports}"
30desc_src="${src}"
31desc_tests="${tests}"
32
33default_doc=off
34default_src=off
35default_ports=off
36default_tests=off
37default_base_dbg=off
38default_lib32_dbg=off
39default_kernel_alt=off
40default_kernel_dbg=on
41default_kernel_alt_dbg=off
42
43for i in ${*}; do
44	dist="${i}"
45	distname="${i%%.txz}"
46	distname="$(echo ${distname} | tr '-' '_')"
47	distname="$(echo ${distname} | tr 'kernel.' 'kernel_')"
48	hash="$(sha256 -q ${i})"
49	nfiles="$(tar tvf ${i} | wc -l | tr -d ' ')"
50	default="$(eval echo \${default_${distname}:-on})"
51	desc="$(eval echo \"\${desc_${distname}}\")"
52
53	case ${i} in
54		kernel-dbg.txz)
55			desc="${desc_kernel_dbg}"
56			;;
57		kernel.*-dbg.txz)
58			desc="$(eval echo \"${desc_kernel_alt_dbg}\")"
59			desc="${desc}: $(eval echo ${i%%-dbg.txz} | cut -f 2 -d '.')"
60			default="$(eval echo \"${default_kernel_alt_dbg}\")"
61			;;
62		kernel.*.txz)
63			desc="$(eval echo \"${desc_kernel_alt}\")"
64			desc="${desc}: $(eval echo ${i%%.txz} | cut -f 2 -d '.')"
65			default="$(eval echo \"${default_kernel_alt}\")"
66			;;
67		*)
68			;;
69	esac
70
71	printf "${dist}\t${hash}\t${nfiles}\t${distname}\t\"${desc}\"\t${default}\n"
72done
73
74