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>