# # $Id: sudo.Makefile,v 1.2 2001/11/27 17:21:42 dgregor Exp $ # # Copyright (c) 1999 Daniel J. Gregor, Jr., All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by Daniel J. Gregor, Jr. # 4. The name of Daniel J. Gregor, Jr. may not be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY DANIEL J. GREGOR, JR. ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL DANIEL J. GREGOR, JR. BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # # Homepage for Sudo: # http://www.courtesan.com/sudo/ # # You can get the source at: # ftp://ftp.cs.colorado.edu/pub/sudo/cu-sudo.v1.5.9p3.tar.gz BUILDDIR = sudo.v1.5.9p3 DESTDIR = ${TOPDIR}/pkg BASEDIR = /opt/FSFsudo ETCDIR = /etc/opt/FSFsudo BASEDIREXISTS=/opt /etc/opt CONFOPTS = PKGNAME = FSFsudo NAME = sudo DESC = a utility to allow restricted root access ARCH:sh = uname -p VERSIONSH1 = echo ${BUILDDIR} | sed -e 's/^[^-]*-//' -e 's/^.*\.v//' VERSIONSH2 = uname -s VERSIONSH3 = uname -r VERSION = ${VERSIONSH1:sh} (${VERSIONSH2:sh}-${VERSIONSH3:sh}) CATEGORY = application MAXINST = 1000 VENDOR = Free Sofware Foundation EMAIL = dj@gregor.com CLASSES = none PKGPROTO = /usr/bin/pkgproto PKGMK = /usr/bin/pkgmk PKGTRANS = /usr/bin/pkgtrans INSTUSER = root INSTGROUP = root TOPDIR:sh = pwd SPOOLDIR = /var/spool/pkg OTHERFILES = ${DESTDIR}${BASEDIR}/COPYING ${DESTDIR}/copyright INSTALLFILES= pkginfo copyright all: pkg pkg: ${BUILDDIR}.pkg ${BUILDDIR}.pkg: ${DESTDIR}/prototype -( cd ${DESTDIR}/${BASEDIR}/bin ; strip * ) ( cd ${DESTDIR} ; ${PKGMK} -d ${SPOOLDIR} -or . ) ( cd ${SPOOLDIR}/${PKGNAME}/reloc ; find . -depth -print | \ grep -v '^\.$$' | cpio -odm | compress > ../reloc.cpio.Z ) rm -rf ${SPOOLDIR}/${PKGNAME}/reloc $(PKGTRANS) ${SPOOLDIR} ${TOPDIR}/${BUILDDIR}.pkg ${PKGNAME} ${DESTDIR}/prototype: ${DESTDIR}/pkginfo @( cd ${DESTDIR} ; \ find . -print | \ $(PKGPROTO) | nawk -v instuser="${INSTUSER}" \ -v instgroup="${INSTGROUP}" -v basedirexists="${BASEDIREXISTS}"\ -v installfiles="${INSTALLFILES}" \ 'BEGIN { \ n = split(installfiles, setupinstallfiles); \ for ( i = 1; i <= n; i++ ) { \ print "i", setupinstallfiles[i]; \ } \ } \ { \ if ( match($$3, "^prototype$$") ) { \ next; \ } \ checkbasedir = basedirexists; \ sub("^/", "", checkbasedir); \ while ( checkbasedir != "" ) { \ if ( match($$3, "^"checkbasedir"$$") ) { \ sub("[^/]*$$", "", checkbasedir); \ sub("/$$", "", checkbasedir); \ print $$1, $$2, $$3, "?", "?", "?"; \ next; \ } \ sub("[^/]*$$", "", checkbasedir); \ sub("/$$", "", checkbasedir); \ } \ n = split(installfiles, checkinstallfiles); \ for ( i = 1; i <= n; i++ ) { \ if (match($$3, "^"checkinstallfiles[i]"$$")) { \ next; \ } \ } \ \ print $$1, $$2, $$3, $$4, instuser, instgroup; \ }' \ ) | \ sed '/ opt /d;/ etc /d;/ etc\/opt /d' | \ sed 's!\(opt/FSFsudo/bin/sudo\) [0-9][0-9]*!\1 4111!' | \ sed 's!\(opt/FSFsudo/sbin/visudo\) [0-9][0-9]*!\1 4111!' \ > ${DESTDIR}/prototype ${DESTDIR}/pkginfo: .package-installed.${BUILDDIR} rm -f ${DESTDIR}/pkginfo @echo "PKG=\"${PKGNAME}\"" >> $@ @echo "NAME=\"${NAME}\"" >> $@ @echo "DESC=\"${DESC}\"" >> $@ @echo "ARCH=\"${ARCH}\"" >> $@ @echo "MAXINST=\"${MAXINST}\"" >> $@ @echo "VERSION=\"${VERSION}\"" >> $@ @echo "CATEGORY=\"${CATEGORY}\"" >> $@ @echo "VENDOR=\"${VENDOR}\"" >> $@ @echo "EMAIL=\"${EMAIL}\"" >> $@ @echo "BASEDIR=\"/\"" >> $@ @echo "CLASSES=\"${CLASSES}\"" >> $@ .package-installed.${BUILDDIR}: build clean.${DESTDIR} ${DESTDIR}${BASEDIR} \ ${OTHERFILES} install-docs deejinstall cd ${BUILDDIR} ; ${MAKE} prefix=${DESTDIR}${BASEDIR} \ sysconfdir=${DESTDIR}${ETCDIR} \ sbindir=${DESTDIR}${BASEDIR}/sbin \ INSTALL=${TOPDIR}/deejinstall \ install_uid=root install_gid=root \ install -chmod 755 ${DESTDIR}${BASEDIR}/bin/* ${DESTDIR}${BASEDIR}/sbin/* touch $@ deejinstall: @echo "#!/bin/sh -" >> $@ @echo "" >> $@ @echo "basename=\"\`basename \$$0\`\"" >> $@ @echo "die() {" >> $@ @echo " echo \"\$$basename: \$$*\" >&2" >> $@ @echo " exit 1" >> $@ @echo "}" >> $@ @echo "" >> $@ @echo "usage=\"\$$basename [-o ] [-g ] [-m ] [-s] \"" >> $@ @echo "" >> $@ @echo "strip=0" >> $@ @echo "" >> $@ @echo "while getopts o:g:m:s c" >> $@ @echo "do" >> $@ @echo " case \$$c in" >> $@ @echo " o)" >> $@ @echo " owner=\"\$$OPTARG\"" >> $@ @echo " ;;" >> $@ @echo "" >> $@ @echo " g)" >> $@ @echo " group=\"\$$OPTARG\"" >> $@ @echo " ;;" >> $@ @echo "" >> $@ @echo " m)" >> $@ @echo " mode=\"\$$OPTARG\"" >> $@ @echo " ;;" >> $@ @echo "" >> $@ @echo " s)" >> $@ @echo " strip=1" >> $@ @echo " ;;" >> $@ @echo "" >> $@ @echo " \\?)" >> $@ @echo " die \"What up?\"" >> $@ @echo " ;;" >> $@ @echo " esac" >> $@ @echo "done" >> $@ @echo "" >> $@ @echo "shift \`expr \$$OPTIND - 1\`" >> $@ @echo "" >> $@ @echo "if [ \$$# -ne 2 ]; then" >> $@ @echo " die \"Usage: \$$usage\"" >> $@ @echo "fi" >> $@ @echo "" >> $@ @echo "source=\"\$$1\"; shift" >> $@ @echo "dest=\"\$$1\"; shift" >> $@ @echo "" >> $@ @echo "cp \"\$$source\" \"\$$dest\" || die \"Could not copy \$$source to \$$dest\"" >> $@ @echo "" >> $@ @echo "if [ \$$strip -ne 0 ]; then" >> $@ @echo " strip \"\$$dest\" || die \"Could not strip \$$dest\"" >> $@ @echo "fi" >> $@ @echo "" >> $@ @echo "if [ \"\$$owner\"x != \"\"x ]; then" >> $@ @echo " chown \"\$$owner\" \"\$$dest\" # don't care if it fails" >> $@ @echo "fi" >> $@ @echo "" >> $@ @echo "if [ \"\$$group\"x != \"\"x ]; then" >> $@ @echo " chgrp \"\$$group\" \"\$$dest\" # don't care if it fails" >> $@ @echo "fi" >> $@ @echo "" >> $@ @echo "if [ \"\$$mode\"x != \"\"x ]; then" >> $@ @echo " chmod \"\$$mode\" \"\$$dest\" # don't care if it fails" >> $@ @echo "fi" >> $@ @chmod 755 $@ ${DESTDIR}${BASEDIR}/COPYING: ${BUILDDIR}/COPYING cp $? $@ ${DESTDIR}/copyright: rm -f $@ @echo "This is free software; you can redistribute it and/or" >> $@ @echo "modify it under the terms of the GNU General Public" >> $@ @echo "License, see the file ${BASEDIR}/COPYING." >> $@ clean.${DESTDIR}: rm -rf ${DESTDIR} ${DESTDIR}${BASEDIR}: mkdir -p ${DESTDIR}${BASEDIR} mkdir -p ${DESTDIR}${BASEDIR}/bin mkdir -p ${DESTDIR}${BASEDIR}/sbin mkdir -p ${DESTDIR}${BASEDIR}/man/man5 mkdir -p ${DESTDIR}${BASEDIR}/man/man8 build: .configured.${BUILDDIR} cd ${BUILDDIR} ; ${MAKE} all clean: rm -rf ${BUILDDIR} ${DESTDIR} .configured.${BUILDDIR} \ .untarred.${BUILDDIR} .package-installed.${BUILDDIR} \ deejinstall ${SPOOLDIR}/${PKGNAME} ${BUILDDIR}.pkg .untarred.${BUILDDIR}: cu-${BUILDDIR}.tar.gz rm -rf ${BUILDDIR} gzip -cd $? | tar xvf - touch $@ .configured.${BUILDDIR}: .untarred.${BUILDDIR} cd ${BUILDDIR} ; ./configure --prefix=${BASEDIR} \ --sysconfdir=${ETCDIR} --sbindir=${BASEDIR}/sbin ${CONFOPTS} touch $@ veryclean: rm -rf ${BUILDDIR} ${DESTDIR} .configured.${BUILDDIR} \ .untarred.${BUILDDIR} .package-installed.${BUILDDIR} \ .revision ${SPOOLDIR}/${PKGNAME} ${BUILDDIR}.pkg install-docs: ${DESTDIR}${BASEDIR}/docs cd ${BUILDDIR} ; ls -1 [A-Z]* | egrep -v 'Makefile|ChangeLog.zoo' | \ cpio -updm ${DESTDIR}${BASEDIR}/docs ${DESTDIR}${BASEDIR}/docs: ${DESTDIR}${BASEDIR} mkdir -p ${DESTDIR}${BASEDIR}/docs