]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - release/packages/generate-ucl.sh
pkgbase: fix caroot packaging and add post-install script
[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
36         case "${outname}" in
37                 caroot)
38                         pkgdeps="utilities"
39                         ;;
40                 runtime)
41                         outname="runtime"
42                         uclfile="${uclfile}"
43                         ;;
44                 runtime_manuals)
45                         outname="${origname}"
46                         pkgdeps="runtime"
47                         ;;
48                 runtime_*)
49                         outname="${origname}"
50                         uclfile="${outname##*}${uclfile}"
51                         pkgdeps="runtime"
52                         _descr="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESCR)"
53                         ;;
54                 jail_*)
55                         outname="${origname}"
56                         uclfile="${outname##*}${uclfile}"
57                         pkgdeps="runtime"
58                         _descr="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESCR)"
59                         ;;
60                 *_lib32_development)
61                         outname="${outname%%_lib32_development}"
62                         _descr="32-bit Libraries, Development Files"
63                         pkgdeps="${outname}"
64                         ;;
65                 *_lib32_debug)
66                         outname="${outname%%_lib32_debug}"
67                         _descr="32-bit Libraries, Debugging Symbols"
68                         pkgdeps="${outname}"
69                         ;;
70                 *_lib32_profile)
71                         outname="${outname%%_lib32_profile}"
72                         _descr="32-bit Libraries, Profiling"
73                         pkgdeps="${outname}"
74                         ;;
75                 *_lib32)
76                         outname="${outname%%_lib32}"
77                         _descr="32-bit Libraries"
78                         pkgdeps="${outname}"
79                         ;;
80                 *_development)
81                         outname="${outname%%_development}"
82                         _descr="Development Files"
83                         pkgdeps="${outname}"
84                         ;;
85                 *_profile)
86                         outname="${outname%%_profile}"
87                         _descr="Profiling Libraries"
88                         pkgdeps="${outname}"
89                         ;;
90                 *_debug)
91                         outname="${outname%%_debug}"
92                         _descr="Debugging Symbols"
93                         pkgdeps="${outname}"
94                         ;;
95                 ${origname})
96                         pkgdeps="runtime"
97                         ;;
98                 *)
99                         uclfile="${outname##*}${origname}"
100                         outname="${outname##*}${origname}"
101                         ;;
102         esac
103
104         outname="${outname%%_*}"
105
106         desc="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_DESC)"
107         comment="$(make -C ${srctree}/release/packages -f Makefile.package -V ${outname}_COMMENT)"
108
109         uclsource="${srctree}/release/packages/${outname}.ucl"
110         if [ ! -e "${uclsource}" ]; then
111                 uclsource="${srctree}/release/packages/template.ucl"
112         fi
113
114         if [ ! -z "${debug}" ]; then
115                 echo ""
116                 echo "==============================================================="
117                 echo "DEBUG:"
118                 echo "_descr=${_descr}"
119                 echo "outname=${outname}"
120                 echo "origname=${origname}"
121                 echo "srctree=${srctree}"
122                 echo "uclfile=${uclfile}"
123                 echo "desc=${desc}"
124                 echo "comment=${comment}"
125                 echo "cp ${uclsource} -> ${uclfile}"
126                 echo "==============================================================="
127                 echo ""
128                 echo ""
129                 echo ""
130         fi
131
132         [ -z "${comment}" ] && comment="${outname} package"
133         [ ! -z "${_descr}" ] && comment="${comment} (${_descr})"
134         [ -z "${desc}" ] && desc="${outname} package"
135
136         cp "${uclsource}" "${uclfile}"
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/%CAP_MKDB_ENDIAN%/${cap_arg}/g" \
143                 -e "s/%PKGDEPS%/${pkgdeps}/" \
144                 ${uclfile}
145         return 0
146 }
147
148 main "${@}"