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>