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