Annotation of embedaddon/sudo/mkpkg, revision 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>