generate-ucl.sh revision 295262
1#!/bin/sh
2#
3# $FreeBSD: projects/release-pkg/release/packages/generate-ucl.sh 295262 2016-02-04 15:32:03Z gjb $
4#
5
6main() {
7	desc=
8	comment=
9	debug=
10	uclsource=
11	while getopts "do:s:u:" arg; do
12		case ${arg} in
13		d)
14			debug=1
15			;;
16		o)
17			outname="${OPTARG}"
18			origname="${OPTARG}"
19			;;
20		s)
21			srctree="${OPTARG}"
22			;;
23		u)
24			uclfile="${OPTARG}"
25			;;
26		*)
27			echo "Unknown argument"
28			;;
29		esac
30	done
31
32	shift $(( ${OPTIND} - 1 ))
33
34	outname="$(echo ${outname} | tr '-' '_')"
35
36	case "${outname}" in
37		*_lib32_development)
38			outname="${outname%%_lib32_development}"
39			_descr="32-bit Libraries, Development Files"
40			pkgdeps="${outname}"
41			;;
42		*_lib32_debug)
43			outname="${outname%%_lib32_debug}"
44			_descr="32-bit Libraries, Debugging Symbols"
45			pkgdeps="${outname}"
46			;;
47		*_lib32_profile)
48			outname="${outname%%_lib32_profile}"
49			_descr="32-bit Libraries, Profiling"
50			pkgdeps="${outname}"
51			;;
52		*_lib32)
53			outname="${outname%%_lib32}"
54			_descr="32-bit Libraries"
55			pkgdeps="${outname}"
56			;;
57		*_development)
58			outname="${outname%%_development}"
59			_descr="Development Files"
60			pkgdeps="${outname}"
61			;;
62		*_profile)
63			outname="${outname%%_profile}"
64			_descr="Profiling Libraries"
65			pkgdeps="${outname}"
66			;;
67		*_debug)
68			outname="${outname%%_debug}"
69			_descr="Debugging Symbols"
70			pkgdeps="${outname}"
71			;;
72		*_manuals)
73			outname="${origname}"
74			pkgdeps="runtime"
75			;;
76		runtime)
77			outname="runtime"
78			uclfile="${uclfile}"
79			;;
80		${origname})
81			pkgdeps="runtime"
82			;;
83		debug|development|lib32|profile)
84			uclfile="${outname##*}${uclfile}"
85			;;
86		*)
87			uclfile="${outname##*}${origname}"
88			outname="${outname##*}${origname}"
89			;;
90	esac
91
92	outname="${outname%%_*}"
93
94	desc="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESC)"
95	comment="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_COMMENT)"
96
97	uclsource="${srctree}/release/packages/${outname}.ucl"
98	if [ ! -e "${uclsource}" ]; then
99		uclsource="${srctree}/release/packages/template.ucl"
100	fi
101
102	if [ ! -z "${debug}" ]; then
103		echo ""
104		echo "==============================================================="
105		echo "DEBUG:"
106		echo "_descr=${_descr}"
107		echo "outname=${outname}"
108		echo "origname=${origname}"
109		echo "srctree=${srctree}"
110		echo "uclfile=${uclfile}"
111		echo "desc=${desc}"
112		echo "comment=${comment}"
113		echo "cp ${uclsource} -> ${uclfile}"
114		echo "==============================================================="
115		echo ""
116		echo ""
117		echo ""
118	fi
119
120	[ -z "${comment}" ] && comment="${outname} package"
121	[ ! -z "${_descr}" ] && comment="${comment} (${_descr})"
122	[ -z "${desc}" ] && desc="${outname} package"
123
124	cp "${uclsource}" "${uclfile}"
125	cap_arg="$(make -C ${srctree}/etc -VCAP_MKDB_ENDIAN)"
126	pwd_arg="$(make -C ${srctree}/etc -VPWD_MKDB_ENDIAN)"
127	sed -i '' -e "s/%VERSION%/${PKG_VERSION}/" \
128		-e "s/%PKGNAME%/${origname}/" \
129		-e "s/%COMMENT%/${comment}/" \
130		-e "s/%DESC%/${desc}/" \
131		-e "s/%CAP_MKDB_ENDIAN%/${cap_arg}/g" \
132		-e "s/%PWD_MKDB_ENDIAN%/${pwd_arg}/g" \
133		-e "s/%PKGDEPS%/${pkgdeps}/" \
134		${uclfile}
135	return 0
136}
137
138main "${@}"
139