]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - release/packages/generate-ucl.sh
pkgbase: Put certctl in the FreeBSD-caroot package
[FreeBSD/FreeBSD.git] / release / packages / generate-ucl.sh
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 main() {
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         vital="false"
35
36         case "${outname}" in
37                 clibs)
38                         vital="true"
39                         # clibs should not have any dependencies or anything
40                         # else imposed on it.
41                         ;;
42                 caroot)
43                         pkgdeps="openssl"
44                         ;;
45                 utilities)
46                         uclfile="${uclfile}"
47                         ;;
48                 runtime)
49                         outname="runtime"
50                         _descr="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESCR)"
51                         vital="true"
52                         ;;
53                 *-lib32_dev)
54                         outname="${outname%%-lib32_dev}"
55                         _descr="32-bit Libraries, Development Files"
56                         pkgdeps="${outname}"
57                         ;;
58                 *-lib32_dbg)
59                         outname="${outname%%-lib32_dbg}"
60                         _descr="32-bit Libraries, Debugging Symbols"
61                         pkgdeps="${outname}"
62                         ;;
63                 *-lib32)
64                         outname="${outname%%-lib32}"
65                         _descr="32-bit Libraries"
66                         pkgdeps="${outname}"
67                         ;;
68                 *-dev)
69                         outname="${outname%%-dev}"
70                         _descr="Development Files"
71                         pkgdeps="${outname}"
72                         ;;
73                 *-dbg)
74                         outname="${outname%%-dbg}"
75                         _descr="Debugging Symbols"
76                         pkgdeps="${outname}"
77                         ;;
78                 *-man)
79                         outname="${outname%%-man}"
80                         _descr="Manual Pages"
81                         pkgdeps="${outname}"
82                         ;;
83                 ${origname})
84                         pkgdeps="runtime"
85                         ;;
86                 *)
87                         uclfile="${outname##*}${origname}"
88                         outname="${outname##*}${origname}"
89                         ;;
90         esac
91
92         desc="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESC)"
93         comment="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_COMMENT)"
94
95         uclsource="${srctree}/release/packages/${outname}.ucl"
96         if [ ! -e "${uclsource}" ]; then
97                 uclsource="${srctree}/release/packages/template.ucl"
98         fi
99
100         if [ ! -z "${debug}" ]; then
101                 echo ""
102                 echo "==============================================================="
103                 echo "DEBUG:"
104                 echo "_descr=${_descr}"
105                 echo "outname=${outname}"
106                 echo "origname=${origname}"
107                 echo "srctree=${srctree}"
108                 echo "uclfile=${uclfile}"
109                 echo "desc=${desc}"
110                 echo "comment=${comment}"
111                 echo "vital=${vital}"
112                 echo "cp ${uclsource} -> ${uclfile}"
113                 echo "==============================================================="
114                 echo ""
115                 echo ""
116                 echo ""
117         fi
118
119         [ -z "${comment}" ] && comment="${outname} package"
120         [ ! -z "${_descr}" ] && comment="${comment} (${_descr})"
121         [ -z "${desc}" ] && desc="${outname} package"
122
123         cp "${uclsource}" "${uclfile}"
124         if [ ! -z "${pkgdeps}" ]; then
125                 cat <<EOF >> ${uclfile}
126 deps: {
127         FreeBSD-${pkgdeps}: {
128                 origin: "base",
129                 version: "${PKG_VERSION}"
130         }
131 }
132 EOF
133         fi
134         cap_arg="$( make -f ${srctree}/share/mk/bsd.endian.mk -VCAP_MKDB_ENDIAN )"
135         sed -i '' -e "s/%VERSION%/${PKG_VERSION}/" \
136                 -e "s/%PKGNAME%/${origname}/" \
137                 -e "s/%COMMENT%/${comment}/" \
138                 -e "s/%DESC%/${desc}/" \
139                 -e "s/%VITAL%/${vital}/" \
140                 -e "s/%CAP_MKDB_ENDIAN%/${cap_arg}/g" \
141                 -e "s/%PKG_NAME_PREFIX%/${PKG_NAME_PREFIX}/" \
142                 -e "s|%PKG_WWW%|${PKG_WWW}|" \
143                 -e "s/%PKG_MAINTAINER%/${PKG_MAINTAINER}/" \
144                 ${uclfile}
145         return 0
146 }
147
148 main "${@}"