Annotation of embedaddon/sudo/mkpkg, revision 1.1.1.1
1.1 misho 1: #!/bin/sh
2: #
3: # Build a binary package using polypkg
4: # Usage: mkpkg [--debug] [--flavor flavor] [--platform platform] [--osversion ver]
5: #
6:
7: # Make sure IFS is set to space, tab, newline in that order.
8: space=' '
9: tab=' '
10: nl='
11: '
12: IFS=" $nl"
13:
14: # Parse arguments
15: usage="usage: mkpkg [--debug] [--flavor flavor] [--platform platform] [--osversion ver]"
16: debug=0
17: flavor=vanilla
18: crossbuild=false
19: while test $# -gt 0; do
20: case "$1" in
21: --debug)
22: set -x
23: debug=1
24: PPFLAGS="--debug${PPFLAGS+$space}${PPFLAGS}"
25: ;;
26: --flavor=?*)
27: flavor=`echo "$1" | sed -n 's/^--flavor=\(.*\)/\1/p'`
28: PPVARS="${PPVARS}${PPVARS+$space}flavor=$flavor"
29: ;;
30: --flavor)
31: if [ $# -lt 2 ]; then
32: echo "$usage" 1>&2
33: exit 1
34: fi
35: flavor="$2"
36: PPVARS="${PPVARS}${PPVARS+$space}flavor=$flavor"
37: shift
38: ;;
39: --platform=?*)
40: arg=`echo "$1" | sed -n 's/^--platform=\(.*\)/\1/p'`
41: PPFLAGS="${PPFLAGS}${PPFLAGS+$space}--platform $arg"
42: ;;
43: --platform)
44: if [ $# -lt 2 ]; then
45: echo "$usage" 1>&2
46: exit 1
47: fi
48: PPFLAGS="${PPFLAGS}${PPFLAGS+$space}--platform $2"
49: shift
50: ;;
51: --osversion=?*)
52: arg=`echo "$1" | sed -n 's/^--osversion=\(.*\)/\1/p'`
53: osversion="$arg"
54: ;;
55: --osversion)
56: if [ $# -lt 2 ]; then
57: echo "$usage" 1>&2
58: exit 1
59: fi
60: osversion="$2"
61: shift
62: ;;
63: --build|--host)
64: crossbuild=true
65: configure_opts="${configure_opts}${configure_opts+$tab}$1"
66: ;;
67: *)
68: # Pass unknown options to configure
69: configure_opts="${configure_opts}${configure_opts+$tab}$1"
70: ;;
71: esac
72: shift
73: done
74:
75: top_srcdir=`dirname $0`
76:
77: : ${osversion="`$top_srcdir/pp --probe`"}
78: test -n "$osversion" || exit 1
79: osrelease=`echo "$osversion" | sed -e 's/^[^0-9]*//' -e 's/-.*$//'`
80:
81: # Default paths
82: prefix=/usr/local
83:
84: # Linux distros may build binaries as pie files.
85: # This is really something libtool should figure out, but it does not.
86: case "$osversion" in
87: *-s390*|*-sparc*|*-alpha*)
88: F_PIE=-fPIE
89: ;;
90: *)
91: F_PIE=-fpie
92: ;;
93: esac
94:
95: # Choose compiler options by osversion if not cross-compiling.
96: if [ "$crossbuild" = "false" ]; then
97: case "$osversion" in
98: hpux*)
99: # Use the HP ANSI C compiler on HP-UX if possible
100: if [ -z "$CC" -a -x /opt/ansic/bin/cc ]; then
101: CC=/opt/ansic/bin/cc; export CC
102: if [ -z "$CFLAGS" ]; then
103: CFLAGS=-O; export CFLAGS
104: fi
105: fi
106: ;;
107: sol[0-9]*)
108: # Use the Sun Studio C compiler on Solaris if possible
109: if [ -z "$CC" -a -x /usr/bin/cc ]; then
110: CC=/usr/bin/cc; export CC
111: if [ -z "$CFLAGS" ]; then
112: CFLAGS=-O; export CFLAGS
113: fi
114: fi
115: ;;
116: esac
117: fi
118:
119: # Choose configure options by osversion.
120: # We use the same configure options as vendor packages when possible.
121: case "$osversion" in
122: centos*|rhel*)
123: prefix=/usr
124: if [ $osrelease -ge 40 ]; then
125: # RHEL 4 and up support SELinux
126: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
127: fi
128: if [ $osrelease -ge 50 ]; then
129: # RHEL 5 and up build pies, have audit support and use a
130: # separate PAM config file for "sudo -i".
131: export CFLAGS="-O2 -g $F_PIE" LDFLAGS="-pie"
132: configure_opts="${configure_opts}${configure_opts+$tab}--with-linux-audit"
133: configure_opts="${configure_opts}${configure_opts+$tab}--with-pam-login"
134: PPVARS="${PPVARS}${PPVARS+$space}linux_audit=1.4.0"
135: fi
136: # Note, must indent with tabs, not spaces due to IFS trickery
137: configure_opts="--prefix=$prefix
138: --with-logging=syslog
139: --with-logfac=authpriv
140: --with-pam
141: --enable-zlib=system
142: --with-editor=/bin/vi
143: --with-env-editor
144: --with-ignore-dot
145: --with-tty-tickets
146: --with-ldap
147: --with-passprompt=[sudo] password for %p:
148: $configure_opts"
149: ;;
150: sles*)
151: prefix=/usr
152: if [ $osrelease -ge 10 ]; then
153: # SLES 10 and higher build pies
154: export CFLAGS="-O2 -g $F_PIE" LDFLAGS="-pie"
155: if [ $osrelease -ge 11 ]; then
156: # SLES 11 and higher has SELinux
157: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
158: fi
159: fi
160: # SuSE doesn't have /usr/libexec
161: libexec=lib
162: case "$osversion" in
163: *64*) gcc -v 2>&1 | grep "with-cpu=[^ ]*32" >/dev/null || libexec=lib64
164: ;;
165: esac
166: # Note, must indent with tabs, not spaces due to IFS trickery
167: # XXX - SuSE uses secure path but only for env_reset
168: configure_opts="--prefix=$prefix
169: --libexecdir=$prefix/$libexec/sudo
170: --with-logging=syslog
171: --with-logfac=auth
172: --with-all-insults
173: --with-ignore-dot
174: --with-tty-tickets
175: --enable-shell-sets-home
176: --with-sudoers-mode=0440
177: --with-pam
178: --enable-zlib=system
179: --with-ldap
180: --with-env-editor
181: --with-passprompt=%p\'s password:
182: $configure_opts"
183:
184: make_opts='docdir=$(datarootdir)/doc/packages/$(PACKAGE_TARNAME)'
185: ;;
186: deb*|ubu*)
187: prefix=/usr
188: # If Ubuntu, add --enable-admin-flag
189: case "$osversion" in
190: ubu*)
191: configure_opts="${configure_opts}${configure_opts+$tab}--enable-admin-flag${tab}--without-lecture"
192: ;;
193: esac
194: # Note, must indent with tabs, not spaces due to IFS trickery
195: if test "$flavor" = "ldap"; then
196: configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap
197: --with-ldap-conf-file=/etc/sudo-ldap.conf"
198: fi
199: configure_opts="--prefix=/usr
200: --with-all-insults
201: --with-exempt=sudo
202: --with-pam
203: --enable-zlib=system
204: --with-fqdn
205: --with-logging=syslog
206: --with-logfac=authpriv
207: --with-env-editor
208: --with-editor=/usr/bin/editor
209: --with-timeout=15
210: --with-password-timeout=0
211: --with-passprompt=[sudo] password for %p:
212: --with-timedir=/var/lib/sudo
213: --disable-root-mailer
214: --disable-setresuid
215: --with-sendmail=/usr/sbin/sendmail
216: --mandir=/usr/share/man
217: --libexecdir=/usr/lib/sudo
218: --with-secure-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
219: $configure_opts"
220: ;;
221: *)
222: # For Solaris, add project support and use let configure choose zlib.
223: # For all others, use the builtin zlib and disable NLS support.
224: case "$osversion" in
225: sol*) configure_opts="${configure_opts}${configure_opts+$tab}--with-project";;
226: *) configure_opts="${configure_opts}${configure_opts+$tab}--enable-zlib=builtin${tab}--disable-nls";;
227: esac
228: if test "$flavor" = "ldap"; then
229: configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap"
230: fi
231: # Note, must indent with tabs, not spaces due to IFS trickery
232: configure_opts="--prefix=$prefix
233: --with-insults=disabled
234: --with-logging=syslog
235: --with-logfac=auth
236: --with-editor=/usr/bin/vim:/usr/bin/vi:/bin/vi
237: --with-env-editor
238: $configure_opts"
239: ;;
240: esac
241:
242: # Remove spaces from IFS when setting $@ so that passprompt may include them
243: OIFS="$IFS"
244: IFS=" $nl"
245: set -- $configure_opts $extra_opts
246: IFS="$OIFS"
247: if [ -r Makefile ]; then
248: make $make_opts distclean
249: fi
250: $top_srcdir/configure "$@" || exit 1
251: make $make_opts && make $make_opts PPFLAGS="$PPFLAGS" PPVARS="$PPVARS" package
252: test $debug -eq 0 && rm -rf destdir
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>