|
|
| version 1.1.1.2, 2012/05/29 12:26:49 | version 1.1.1.6, 2014/06/15 16:12:53 |
|---|---|
| Line 1 | Line 1 |
| #!/bin/sh | #!/bin/sh |
| # | # |
| # Copyright (c) 2010-2013 Todd C. Miller <Todd.Miller@courtesan.com> | |
| # | |
| # Permission to use, copy, modify, and distribute this software for any | |
| # purpose with or without fee is hereby granted, provided that the above | |
| # copyright notice and this permission notice appear in all copies. | |
| # | |
| # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
| # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
| # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
| # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
| # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
| # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
| # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
| # | |
| # Build a binary package using polypkg | # Build a binary package using polypkg |
| # Usage: mkpkg [--debug] [--flavor flavor] [--platform platform] [--osversion ver] | # Usage: mkpkg [--debug] [--flavor flavor] [--platform platform] [--osversion ver] |
| # | # |
| Line 78 top_srcdir=`dirname $0` | Line 92 top_srcdir=`dirname $0` |
| test -n "$osversion" || exit 1 | test -n "$osversion" || exit 1 |
| osrelease=`echo "$osversion" | sed -e 's/^[^0-9]*//' -e 's/-.*$//'` | osrelease=`echo "$osversion" | sed -e 's/^[^0-9]*//' -e 's/-.*$//'` |
| # Default paths | |
| prefix=/usr/local | |
| # Linux distros may build binaries as pie files. | |
| # This is really something libtool should figure out, but it does not. | |
| case "$osversion" in | |
| *-s390*|*-sparc*|*-alpha*) | |
| F_PIE=-fPIE | |
| ;; | |
| *) | |
| F_PIE=-fpie | |
| ;; | |
| esac | |
| # Choose compiler options by osversion if not cross-compiling. | # Choose compiler options by osversion if not cross-compiling. |
| if [ "$crossbuild" = "false" ]; then | if [ "$crossbuild" = "false" ]; then |
| case "$osversion" in | case "$osversion" in |
| Line 120 fi | Line 120 fi |
| # We use the same configure options as vendor packages when possible. | # We use the same configure options as vendor packages when possible. |
| case "$osversion" in | case "$osversion" in |
| centos*|rhel*) | centos*|rhel*) |
| prefix=/usr | |
| if [ $osrelease -ge 40 ]; then | if [ $osrelease -ge 40 ]; then |
| # RHEL 4 and up support SELinux | # RHEL 4 and up support SELinux |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux" | configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux" |
| fi | fi |
| if [ $osrelease -ge 50 ]; then | if [ $osrelease -ge 50 ]; then |
| # RHEL 5 and up build pies, have audit support and use a | # RHEL 5 and up has audit support and uses a separate PAM |
| # separate PAM config file for "sudo -i". | # config file for "sudo -i". |
| export CFLAGS="-O2 -g $F_PIE" LDFLAGS="-pie" | |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-linux-audit" | configure_opts="${configure_opts}${configure_opts+$tab}--with-linux-audit" |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-pam-login" | configure_opts="${configure_opts}${configure_opts+$tab}--with-pam-login" |
| PPVARS="${PPVARS}${PPVARS+$space}linux_audit=1.4.0" | PPVARS="${PPVARS}${PPVARS+$space}linux_audit=1.4.0" |
| fi | fi |
| if [ $osrelease -ge 60 ]; then | |
| # RHEL 6 and above builds sudo with SSSD support | |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-sssd" | |
| fi | |
| # Note, must indent with tabs, not spaces due to IFS trickery | # Note, must indent with tabs, not spaces due to IFS trickery |
| configure_opts="--prefix=$prefix | configure_opts="--prefix=/usr |
| --with-logging=syslog | --with-logging=syslog |
| --with-logfac=authpriv | --with-logfac=authpriv |
| --with-pam | --with-pam |
| Line 145 case "$osversion" in | Line 147 case "$osversion" in |
| --with-tty-tickets | --with-tty-tickets |
| --with-ldap | --with-ldap |
| --with-passprompt=[sudo] password for %p: | --with-passprompt=[sudo] password for %p: |
| --with-sendmail=/usr/sbin/sendmail | |
| $configure_opts" | $configure_opts" |
| ;; | ;; |
| sles*) | sles*) |
| prefix=/usr | |
| if [ $osrelease -ge 10 ]; then | if [ $osrelease -ge 10 ]; then |
| # SLES 10 and higher build pies | # SLES 11 and higher has SELinux |
| export CFLAGS="-O2 -g $F_PIE" LDFLAGS="-pie" | |
| if [ $osrelease -ge 11 ]; then | if [ $osrelease -ge 11 ]; then |
| # SLES 11 and higher has SELinux | |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux" | configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux" |
| fi | fi |
| fi | fi |
| Line 165 case "$osversion" in | Line 165 case "$osversion" in |
| esac | esac |
| # Note, must indent with tabs, not spaces due to IFS trickery | # Note, must indent with tabs, not spaces due to IFS trickery |
| # XXX - SuSE uses secure path but only for env_reset | # XXX - SuSE uses secure path but only for env_reset |
| configure_opts="--prefix=$prefix | configure_opts="--prefix=/usr |
| --libexecdir=$prefix/$libexec/sudo | --libexecdir=/usr/$libexec |
| --with-logging=syslog | --with-logging=syslog |
| --with-logfac=auth | --with-logfac=auth |
| --with-all-insults | --with-all-insults |
| Line 179 case "$osversion" in | Line 179 case "$osversion" in |
| --with-ldap | --with-ldap |
| --with-env-editor | --with-env-editor |
| --with-passprompt=%p\'s password: | --with-passprompt=%p\'s password: |
| --with-sendmail=/usr/sbin/sendmail | |
| $configure_opts" | $configure_opts" |
| make_opts='docdir=$(datarootdir)/doc/packages/$(PACKAGE_TARNAME)' | make_opts='docdir=$(datarootdir)/doc/packages/$(PACKAGE_TARNAME)' |
| ;; | ;; |
| deb*|ubu*) | deb*|ubu*) |
| prefix=/usr | # Man pages should be compressed in .deb files |
| export MANCOMPRESS='gzip -9' | |
| export MANCOMPRESSEXT='.gz' | |
| # If Ubuntu, add --enable-admin-flag | # If Ubuntu, add --enable-admin-flag |
| case "$osversion" in | case "$osversion" in |
| ubu*) | ubu*) |
| configure_opts="${configure_opts}${configure_opts+$tab}--enable-admin-flag${tab}--without-lecture" | configure_opts="${configure_opts}${configure_opts+$tab}--enable-admin-flag${tab}--without-lecture" |
| if [ $osrelease -ge 1004 ]; then | |
| export CFLAGS="-O2 -g $F_PIE" LDFLAGS="-pie" | |
| fi | |
| ;; | ;; |
| deb*) | |
| if [ $osrelease -ge 600 ]; then | |
| export CFLAGS="-O2 -g $F_PIE" LDFLAGS="-pie" | |
| fi | |
| ;; | |
| esac | esac |
| # Note, must indent with tabs, not spaces due to IFS trickery | # Note, must indent with tabs, not spaces due to IFS trickery |
| if test "$flavor" = "ldap"; then | if test "$flavor" = "ldap"; then |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap | configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap |
| --with-ldap-conf-file=/etc/sudo-ldap.conf" | --with-ldap-conf-file=/etc/sudo-ldap.conf" |
| fi | fi |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-selinux" | |
| configure_opts="--prefix=/usr | configure_opts="--prefix=/usr |
| --with-all-insults | --with-all-insults |
| --with-pam | --with-pam |
| Line 216 case "$osversion" in | Line 212 case "$osversion" in |
| --with-timeout=15 | --with-timeout=15 |
| --with-password-timeout=0 | --with-password-timeout=0 |
| --with-passprompt=[sudo] password for %p: | --with-passprompt=[sudo] password for %p: |
| --with-timedir=/var/lib/sudo | |
| --disable-root-mailer | --disable-root-mailer |
| --disable-setresuid | |
| --with-sendmail=/usr/sbin/sendmail | --with-sendmail=/usr/sbin/sendmail |
| --mandir=/usr/share/man | --mandir=/usr/share/man |
| --libexecdir=/usr/lib/sudo | --libexecdir=/usr/lib |
| --with-secure-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin | --with-secure-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin |
| $configure_opts" | $configure_opts" |
| ;; | ;; |
| Line 234 case "$osversion" in | Line 228 case "$osversion" in |
| esac | esac |
| if test "${osversion}" != "`$top_srcdir/pp --probe`"; then | if test "${osversion}" != "`$top_srcdir/pp --probe`"; then |
| sdkvers=`echo "${osversion}" | sed 's/^macos\([0-9][0-9]\)\([0-9]*\)-.*$/\1.\2/'` | sdkvers=`echo "${osversion}" | sed 's/^macos\([0-9][0-9]\)\([0-9]*\)-.*$/\1.\2/'` |
| SDK_FLAGS="-isysroot /Developer/SDKs/MacOSX${sdkvers}.sdk -mmacosx-version-min=${sdkvers}" | # Newer Xcode puts /Developer under the app Contents dir. |
| SDK_DIR="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" | |
| if test -d "${SDK_DIR}/MacOSX${sdkvers}.sdk"; then | |
| SDK_DIR="${SDK_DIR}/MacOSX${sdkvers}.sdk" | |
| elif test -d "/Developer/SDKs/MacOSX${sdkvers}.sdk"; then | |
| SDK_DIR="/Developer/SDKs/MacOSX${sdkvers}.sdk" | |
| fi | |
| SDK_FLAGS="-isysroot ${SDK_DIR} -mmacosx-version-min=${sdkvers}" | |
| fi | fi |
| export CFLAGS="-O2 -g $ARCH_FLAGS $SDK_FLAGS" | export CFLAGS="-O2 -g $ARCH_FLAGS $SDK_FLAGS" |
| export LDFLAGS="$ARCH_FLAGS $SDK_FLAGS" | export LDFLAGS="$ARCH_FLAGS $SDK_FLAGS" |
| if [ $osrelease -ge 105 ]; then | |
| CFLAGS="$CFLAGS $F_PIE" | |
| LDFLAGS="$LDFLAGS -Wl,-pie" | |
| fi | |
| # Note, must indent with tabs, not spaces due to IFS trickery | # Note, must indent with tabs, not spaces due to IFS trickery |
| configure_opts="--prefix=$prefix | configure_opts="--with-pam |
| --with-pam | --with-bsm-audit |
| --without-tty-tickets | --without-tty-tickets |
| --enable-zlib=system | --enable-zlib=system |
| --with-ldap | --with-ldap |
| Line 255 case "$osversion" in | Line 252 case "$osversion" in |
| --with-env-editor | --with-env-editor |
| $configure_opts" | $configure_opts" |
| ;; | ;; |
| aix*) | |
| # Use -gxcoff with gcc instead of -g for dbx-style debugging symbols. | |
| if test -z "$CC" && gcc -v >/dev/null 2>&1; then | |
| CFLAGS=-gxcoff; export CFLAGS | |
| fi | |
| # Note, must indent with tabs, not spaces due to IFS trickery | |
| # Note: we include our own zlib instead of relying on the | |
| # AIX freeware version being installed. | |
| configure_opts=" | |
| --prefix=/opt/freeware | |
| --mandir=/opt/freeware/man | |
| --with-insults=disabled | |
| --with-logging=syslog | |
| --with-logfac=auth | |
| --with-editor=/usr/bin/vi | |
| --with-env-editor | |
| --enable-zlib=builtin | |
| --disable-nls | |
| --with-sendmail=/usr/sbin/sendmail | |
| $configure_opts" | |
| PPVARS="${PPVARS}${PPVARS+$space}aix_freeware=true" | |
| ;; | |
| *) | *) |
| # For Solaris, add project support and use let configure choose zlib. | # For Solaris, add project support and use let configure choose zlib. |
| # For all others, use the builtin zlib and disable NLS support. | # For all others, use the builtin zlib and disable NLS support. |
| case "$osversion" in | case "$osversion" in |
| sol*) configure_opts="${configure_opts}${configure_opts+$tab}--with-project";; | sol*) |
| *) configure_opts="${configure_opts}${configure_opts+$tab}--enable-zlib=builtin${tab}--disable-nls";; | configure_opts="${configure_opts}${configure_opts+$tab}--with-project" |
| if [ $osrelease -ge 11 ]; then | |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-bsm-audit" | |
| fi | |
| ;; | |
| *) | |
| configure_opts="${configure_opts}${configure_opts+$tab}--enable-zlib=builtin${tab}--disable-nls" | |
| ;; | |
| esac | esac |
| if test "$flavor" = "ldap"; then | if test "$flavor" = "ldap"; then |
| configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap" | configure_opts="${configure_opts}${configure_opts+$tab}--with-ldap" |
| fi | fi |
| # Note, must indent with tabs, not spaces due to IFS trickery | # Note, must indent with tabs, not spaces due to IFS trickery |
| configure_opts="--prefix=$prefix | configure_opts=" |
| --with-insults=disabled | --with-insults=disabled |
| --with-logging=syslog | --with-logging=syslog |
| --with-logfac=auth | --with-logfac=auth |