|
|
| version 1.1, 2012/02/21 16:23:02 | version 1.1.1.4, 2013/07/22 10:46:11 |
|---|---|
| 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 |
| # 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 143 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 161 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 175 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*) |
| Line 196 case "$osversion" in | Line 195 case "$osversion" in |
| 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-exempt=sudo | |
| --with-pam | --with-pam |
| --enable-zlib=system | --enable-zlib=system |
| --with-fqdn | --with-fqdn |
| Line 214 case "$osversion" in | Line 213 case "$osversion" in |
| --disable-setresuid | --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" |
| ;; | ;; |
| macos*) | |
| case "$osversion" in | |
| *i386|*x86_64) | |
| # Build intel-only universal binaries | |
| ARCH_FLAGS="-arch i386 -arch x86_64" | |
| ;; | |
| esac | |
| if test "${osversion}" != "`$top_srcdir/pp --probe`"; then | |
| 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}" | |
| fi | |
| export CFLAGS="-O2 -g $ARCH_FLAGS $SDK_FLAGS" | |
| export LDFLAGS="$ARCH_FLAGS $SDK_FLAGS" | |
| # Note, must indent with tabs, not spaces due to IFS trickery | |
| configure_opts="--with-pam | |
| --without-tty-tickets | |
| --enable-zlib=system | |
| --with-ldap | |
| --with-insults=disabled | |
| --with-logging=syslog | |
| --with-logfac=authpriv | |
| --with-editor=/usr/bin/vim | |
| --with-env-editor | |
| $configure_opts" | |
| ;; | |
| aix*) | |
| # 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. |
| Line 229 case "$osversion" in | Line 271 case "$osversion" in |
| 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 |