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