Annotation of embedaddon/sudo/mkpkg, revision 1.1.1.4
1.1 misho 1: #!/bin/sh
2: #
1.1.1.4 ! misho 3: # Copyright (c) 2010-2013 Todd C. Miller <Todd.Miller@courtesan.com>
! 4: #
! 5: # Permission to use, copy, modify, and distribute this software for any
! 6: # purpose with or without fee is hereby granted, provided that the above
! 7: # copyright notice and this permission notice appear in all copies.
! 8: #
! 9: # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 10: # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 11: # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 12: # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 13: # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 14: # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 15: # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 16: #
1.1 misho 17: # Build a binary package using polypkg
18: # Usage: mkpkg [--debug] [--flavor flavor] [--platform platform] [--osversion ver]
19: #
20:
21: # Make sure IFS is set to space, tab, newline in that order.
22: space=' '
23: tab=' '
24: nl='
25: '
26: IFS=" $nl"
27:
28: # Parse arguments
29: usage="usage: mkpkg [--debug] [--flavor flavor] [--platform platform] [--osversion ver]"
30: debug=0
31: flavor=vanilla
32: crossbuild=false
33: while test $# -gt 0; do
34: case "$1" in
35: --debug)
36: set -x
37: debug=1
38: PPFLAGS="--debug${PPFLAGS+$space}${PPFLAGS}"
39: ;;
40: --flavor=?*)
41: flavor=`echo "$1" | sed -n 's/^--flavor=\(.*\)/\1/p'`
42: PPVARS="${PPVARS}${PPVARS+$space}flavor=$flavor"
43: ;;
44: --flavor)
45: if [ $# -lt 2 ]; then
46: echo "$usage" 1>&2
47: exit 1
48: fi
49: flavor="$2"
50: PPVARS="${PPVARS}${PPVARS+$space}flavor=$flavor"
51: shift
52: ;;
53: --platform=?*)
54: arg=`echo "$1" | sed -n 's/^--platform=\(.*\)/\1/p'`
55: PPFLAGS="${PPFLAGS}${PPFLAGS+$space}--platform $arg"
56: ;;
57: --platform)
58: if [ $# -lt 2 ]; then
59: echo "$usage" 1>&2
60: exit 1
61: fi
62: PPFLAGS="${PPFLAGS}${PPFLAGS+$space}--platform $2"
63: shift
64: ;;
65: --osversion=?*)
66: arg=`echo "$1" | sed -n 's/^--osversion=\(.*\)/\1/p'`
67: osversion="$arg"
68: ;;
69: --osversion)
70: if [ $# -lt 2 ]; then
71: echo "$usage" 1>&2
72: exit 1
73: fi
74: osversion="$2"
75: shift
76: ;;
77: --build|--host)
78: crossbuild=true
79: configure_opts="${configure_opts}${configure_opts+$tab}$1"
80: ;;
81: *)
82: # Pass unknown options to configure
83: configure_opts="${configure_opts}${configure_opts+$tab}$1"
84: ;;
85: esac
86: shift
87: done
88:
89: top_srcdir=`dirname $0`
90:
91: : ${osversion="`$top_srcdir/pp --probe`"}
92: test -n "$osversion" || exit 1
93: osrelease=`echo "$osversion" | sed -e 's/^[^0-9]*//' -e 's/-.*$//'`
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: if [ $osrelease -ge 40 ]; then
124: # RHEL 4 and up support SELinux
125: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
126: fi
127: if [ $osrelease -ge 50 ]; then
1.1.1.3 misho 128: # RHEL 5 and up has audit support and uses a separate PAM
129: # config file for "sudo -i".
1.1 misho 130: configure_opts="${configure_opts}${configure_opts+$tab}--with-linux-audit"
131: configure_opts="${configure_opts}${configure_opts+$tab}--with-pam-login"
132: PPVARS="${PPVARS}${PPVARS+$space}linux_audit=1.4.0"
133: fi
134: # Note, must indent with tabs, not spaces due to IFS trickery
1.1.1.3 misho 135: configure_opts="--prefix=/usr
1.1 misho 136: --with-logging=syslog
137: --with-logfac=authpriv
138: --with-pam
139: --enable-zlib=system
140: --with-editor=/bin/vi
141: --with-env-editor
142: --with-ignore-dot
143: --with-tty-tickets
144: --with-ldap
145: --with-passprompt=[sudo] password for %p:
1.1.1.4 ! misho 146: --with-sendmail=/usr/sbin/sendmail
1.1 misho 147: $configure_opts"
148: ;;
149: sles*)
150: if [ $osrelease -ge 10 ]; then
1.1.1.3 misho 151: # SLES 11 and higher has SELinux
1.1 misho 152: if [ $osrelease -ge 11 ]; then
153: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
154: fi
155: fi
156: # SuSE doesn't have /usr/libexec
157: libexec=lib
158: case "$osversion" in
159: *64*) gcc -v 2>&1 | grep "with-cpu=[^ ]*32" >/dev/null || libexec=lib64
160: ;;
161: esac
162: # Note, must indent with tabs, not spaces due to IFS trickery
163: # XXX - SuSE uses secure path but only for env_reset
1.1.1.3 misho 164: configure_opts="--prefix=/usr
1.1.1.4 ! misho 165: --libexecdir=/usr/$libexec
1.1 misho 166: --with-logging=syslog
167: --with-logfac=auth
168: --with-all-insults
169: --with-ignore-dot
170: --with-tty-tickets
171: --enable-shell-sets-home
172: --with-sudoers-mode=0440
173: --with-pam
174: --enable-zlib=system
175: --with-ldap
176: --with-env-editor
177: --with-passprompt=%p\'s password:
1.1.1.4 ! misho 178: --with-sendmail=/usr/sbin/sendmail
1.1 misho 179: $configure_opts"
180:
181: make_opts='docdir=$(datarootdir)/doc/packages/$(PACKAGE_TARNAME)'
182: ;;
183: deb*|ubu*)
1.1.1.3 misho 184: # Man pages should be compressed in .deb files
185: export MANCOMPRESS='gzip -9'
186: export MANCOMPRESSEXT='.gz'
1.1 misho 187: # If Ubuntu, add --enable-admin-flag
188: case "$osversion" in
189: ubu*)
190: configure_opts="${configure_opts}${configure_opts+$tab}--enable-admin-flag${tab}--without-lecture"
191: ;;
192: esac
193: # Note, must indent with tabs, not spaces due to IFS trickery
194: if test "$flavor" = "ldap"; then
195: configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap
196: --with-ldap-conf-file=/etc/sudo-ldap.conf"
197: fi
1.1.1.3 misho 198: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
1.1 misho 199: configure_opts="--prefix=/usr
200: --with-all-insults
201: --with-pam
202: --enable-zlib=system
203: --with-fqdn
204: --with-logging=syslog
205: --with-logfac=authpriv
206: --with-env-editor
207: --with-editor=/usr/bin/editor
208: --with-timeout=15
209: --with-password-timeout=0
210: --with-passprompt=[sudo] password for %p:
211: --with-timedir=/var/lib/sudo
212: --disable-root-mailer
213: --disable-setresuid
214: --with-sendmail=/usr/sbin/sendmail
215: --mandir=/usr/share/man
1.1.1.4 ! misho 216: --libexecdir=/usr/lib
1.1 misho 217: --with-secure-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
218: $configure_opts"
219: ;;
1.1.1.2 misho 220: macos*)
221: case "$osversion" in
222: *i386|*x86_64)
223: # Build intel-only universal binaries
224: ARCH_FLAGS="-arch i386 -arch x86_64"
225: ;;
226: esac
227: if test "${osversion}" != "`$top_srcdir/pp --probe`"; then
228: sdkvers=`echo "${osversion}" | sed 's/^macos\([0-9][0-9]\)\([0-9]*\)-.*$/\1.\2/'`
229: SDK_FLAGS="-isysroot /Developer/SDKs/MacOSX${sdkvers}.sdk -mmacosx-version-min=${sdkvers}"
230: fi
231: export CFLAGS="-O2 -g $ARCH_FLAGS $SDK_FLAGS"
232: export LDFLAGS="$ARCH_FLAGS $SDK_FLAGS"
233: # Note, must indent with tabs, not spaces due to IFS trickery
1.1.1.3 misho 234: configure_opts="--with-pam
1.1.1.2 misho 235: --without-tty-tickets
236: --enable-zlib=system
237: --with-ldap
238: --with-insults=disabled
239: --with-logging=syslog
240: --with-logfac=authpriv
241: --with-editor=/usr/bin/vim
242: --with-env-editor
243: $configure_opts"
244: ;;
1.1.1.3 misho 245: aix*)
246: # Note, must indent with tabs, not spaces due to IFS trickery
247: # Note: we include our own zlib instead of relying on the
248: # AIX freeware version being installed.
249: configure_opts="
250: --prefix=/opt/freeware
251: --mandir=/opt/freeware/man
252: --with-insults=disabled
253: --with-logging=syslog
254: --with-logfac=auth
255: --with-editor=/usr/bin/vi
256: --with-env-editor
257: --enable-zlib=builtin
258: --disable-nls
1.1.1.4 ! misho 259: --with-sendmail=/usr/sbin/sendmail
1.1.1.3 misho 260: $configure_opts"
261: PPVARS="${PPVARS}${PPVARS+$space}aix_freeware=true"
262: ;;
1.1 misho 263: *)
264: # For Solaris, add project support and use let configure choose zlib.
265: # For all others, use the builtin zlib and disable NLS support.
266: case "$osversion" in
267: sol*) configure_opts="${configure_opts}${configure_opts+$tab}--with-project";;
268: *) configure_opts="${configure_opts}${configure_opts+$tab}--enable-zlib=builtin${tab}--disable-nls";;
269: esac
270: if test "$flavor" = "ldap"; then
271: configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap"
272: fi
273: # Note, must indent with tabs, not spaces due to IFS trickery
1.1.1.3 misho 274: configure_opts="
1.1 misho 275: --with-insults=disabled
276: --with-logging=syslog
277: --with-logfac=auth
278: --with-editor=/usr/bin/vim:/usr/bin/vi:/bin/vi
279: --with-env-editor
280: $configure_opts"
281: ;;
282: esac
283:
284: # Remove spaces from IFS when setting $@ so that passprompt may include them
285: OIFS="$IFS"
286: IFS=" $nl"
287: set -- $configure_opts $extra_opts
288: IFS="$OIFS"
289: if [ -r Makefile ]; then
290: make $make_opts distclean
291: fi
292: $top_srcdir/configure "$@" || exit 1
293: make $make_opts && make $make_opts PPFLAGS="$PPFLAGS" PPVARS="$PPVARS" package
294: test $debug -eq 0 && rm -rf destdir
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>