Annotation of embedaddon/sudo/mkpkg, revision 1.1.1.3
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: # Choose compiler options by osversion if not cross-compiling.
82: if [ "$crossbuild" = "false" ]; then
83: case "$osversion" in
84: hpux*)
85: # Use the HP ANSI C compiler on HP-UX if possible
86: if [ -z "$CC" -a -x /opt/ansic/bin/cc ]; then
87: CC=/opt/ansic/bin/cc; export CC
88: if [ -z "$CFLAGS" ]; then
89: CFLAGS=-O; export CFLAGS
90: fi
91: fi
92: ;;
93: sol[0-9]*)
94: # Use the Sun Studio C compiler on Solaris if possible
95: if [ -z "$CC" -a -x /usr/bin/cc ]; then
96: CC=/usr/bin/cc; export CC
97: if [ -z "$CFLAGS" ]; then
98: CFLAGS=-O; export CFLAGS
99: fi
100: fi
101: ;;
102: esac
103: fi
104:
105: # Choose configure options by osversion.
106: # We use the same configure options as vendor packages when possible.
107: case "$osversion" in
108: centos*|rhel*)
109: if [ $osrelease -ge 40 ]; then
110: # RHEL 4 and up support SELinux
111: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
112: fi
113: if [ $osrelease -ge 50 ]; then
1.1.1.3 ! misho 114: # RHEL 5 and up has audit support and uses a separate PAM
! 115: # config file for "sudo -i".
1.1 misho 116: configure_opts="${configure_opts}${configure_opts+$tab}--with-linux-audit"
117: configure_opts="${configure_opts}${configure_opts+$tab}--with-pam-login"
118: PPVARS="${PPVARS}${PPVARS+$space}linux_audit=1.4.0"
119: fi
120: # Note, must indent with tabs, not spaces due to IFS trickery
1.1.1.3 ! misho 121: configure_opts="--prefix=/usr
1.1 misho 122: --with-logging=syslog
123: --with-logfac=authpriv
124: --with-pam
125: --enable-zlib=system
126: --with-editor=/bin/vi
127: --with-env-editor
128: --with-ignore-dot
129: --with-tty-tickets
130: --with-ldap
131: --with-passprompt=[sudo] password for %p:
132: $configure_opts"
133: ;;
134: sles*)
135: if [ $osrelease -ge 10 ]; then
1.1.1.3 ! misho 136: # SLES 11 and higher has SELinux
1.1 misho 137: if [ $osrelease -ge 11 ]; then
138: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
139: fi
140: fi
141: # SuSE doesn't have /usr/libexec
142: libexec=lib
143: case "$osversion" in
144: *64*) gcc -v 2>&1 | grep "with-cpu=[^ ]*32" >/dev/null || libexec=lib64
145: ;;
146: esac
147: # Note, must indent with tabs, not spaces due to IFS trickery
148: # XXX - SuSE uses secure path but only for env_reset
1.1.1.3 ! misho 149: configure_opts="--prefix=/usr
! 150: --libexecdir=/usr/$libexec/sudo
1.1 misho 151: --with-logging=syslog
152: --with-logfac=auth
153: --with-all-insults
154: --with-ignore-dot
155: --with-tty-tickets
156: --enable-shell-sets-home
157: --with-sudoers-mode=0440
158: --with-pam
159: --enable-zlib=system
160: --with-ldap
161: --with-env-editor
162: --with-passprompt=%p\'s password:
163: $configure_opts"
164:
165: make_opts='docdir=$(datarootdir)/doc/packages/$(PACKAGE_TARNAME)'
166: ;;
167: deb*|ubu*)
1.1.1.3 ! misho 168: # Man pages should be compressed in .deb files
! 169: export MANCOMPRESS='gzip -9'
! 170: export MANCOMPRESSEXT='.gz'
1.1 misho 171: # If Ubuntu, add --enable-admin-flag
172: case "$osversion" in
173: ubu*)
174: configure_opts="${configure_opts}${configure_opts+$tab}--enable-admin-flag${tab}--without-lecture"
175: ;;
176: esac
177: # Note, must indent with tabs, not spaces due to IFS trickery
178: if test "$flavor" = "ldap"; then
179: configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap
180: --with-ldap-conf-file=/etc/sudo-ldap.conf"
181: fi
1.1.1.3 ! misho 182: configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux"
1.1 misho 183: configure_opts="--prefix=/usr
184: --with-all-insults
185: --with-pam
186: --enable-zlib=system
187: --with-fqdn
188: --with-logging=syslog
189: --with-logfac=authpriv
190: --with-env-editor
191: --with-editor=/usr/bin/editor
192: --with-timeout=15
193: --with-password-timeout=0
194: --with-passprompt=[sudo] password for %p:
195: --with-timedir=/var/lib/sudo
196: --disable-root-mailer
197: --disable-setresuid
198: --with-sendmail=/usr/sbin/sendmail
199: --mandir=/usr/share/man
200: --libexecdir=/usr/lib/sudo
201: --with-secure-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
202: $configure_opts"
203: ;;
1.1.1.2 misho 204: macos*)
205: case "$osversion" in
206: *i386|*x86_64)
207: # Build intel-only universal binaries
208: ARCH_FLAGS="-arch i386 -arch x86_64"
209: ;;
210: esac
211: if test "${osversion}" != "`$top_srcdir/pp --probe`"; then
212: sdkvers=`echo "${osversion}" | sed 's/^macos\([0-9][0-9]\)\([0-9]*\)-.*$/\1.\2/'`
213: SDK_FLAGS="-isysroot /Developer/SDKs/MacOSX${sdkvers}.sdk -mmacosx-version-min=${sdkvers}"
214: fi
215: export CFLAGS="-O2 -g $ARCH_FLAGS $SDK_FLAGS"
216: export LDFLAGS="$ARCH_FLAGS $SDK_FLAGS"
217: # Note, must indent with tabs, not spaces due to IFS trickery
1.1.1.3 ! misho 218: configure_opts="--with-pam
1.1.1.2 misho 219: --without-tty-tickets
220: --enable-zlib=system
221: --with-ldap
222: --with-insults=disabled
223: --with-logging=syslog
224: --with-logfac=authpriv
225: --with-editor=/usr/bin/vim
226: --with-env-editor
227: $configure_opts"
228: ;;
1.1.1.3 ! misho 229: aix*)
! 230: # Note, must indent with tabs, not spaces due to IFS trickery
! 231: # Note: we include our own zlib instead of relying on the
! 232: # AIX freeware version being installed.
! 233: configure_opts="
! 234: --prefix=/opt/freeware
! 235: --mandir=/opt/freeware/man
! 236: --with-insults=disabled
! 237: --with-logging=syslog
! 238: --with-logfac=auth
! 239: --with-editor=/usr/bin/vi
! 240: --with-env-editor
! 241: --enable-zlib=builtin
! 242: --disable-nls
! 243: $configure_opts"
! 244: PPVARS="${PPVARS}${PPVARS+$space}aix_freeware=true"
! 245: ;;
1.1 misho 246: *)
247: # For Solaris, add project support and use let configure choose zlib.
248: # For all others, use the builtin zlib and disable NLS support.
249: case "$osversion" in
250: sol*) configure_opts="${configure_opts}${configure_opts+$tab}--with-project";;
251: *) configure_opts="${configure_opts}${configure_opts+$tab}--enable-zlib=builtin${tab}--disable-nls";;
252: esac
253: if test "$flavor" = "ldap"; then
254: configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap"
255: fi
256: # Note, must indent with tabs, not spaces due to IFS trickery
1.1.1.3 ! misho 257: configure_opts="
1.1 misho 258: --with-insults=disabled
259: --with-logging=syslog
260: --with-logfac=auth
261: --with-editor=/usr/bin/vim:/usr/bin/vi:/bin/vi
262: --with-env-editor
263: $configure_opts"
264: ;;
265: esac
266:
267: # Remove spaces from IFS when setting $@ so that passprompt may include them
268: OIFS="$IFS"
269: IFS=" $nl"
270: set -- $configure_opts $extra_opts
271: IFS="$OIFS"
272: if [ -r Makefile ]; then
273: make $make_opts distclean
274: fi
275: $top_srcdir/configure "$@" || exit 1
276: make $make_opts && make $make_opts PPFLAGS="$PPFLAGS" PPVARS="$PPVARS" package
277: test $debug -eq 0 && rm -rf destdir
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>