# $Id$ # ------------------------------------------------------------------ # # Copyright (C) 2002-2005 Novell/SUSE # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ------------------------------------------------------------------ # Make.rules - common make targets and variables for building the SHASS # product. # # NOTES: # - must define the package NAME before including this file. # - After checking in to cvs, you'll need to delele the hardlinked # Make.rules files that already exist in the individual application # directories DISTRIBUTION=AppArmor VERSION=2.0.1 # OVERRIDABLE variables # Set these variables before including Make.rules to change its behavior # SPECFILE - for packages that have a non-standard specfile name # EXTERNAL_PACKAGE - for packages that have upstream versions that # we're locally modifying (e.g. imnxcerttool/gnutls). # # use 'make BUILDIR=/some/where/else/' to override the /usr/src/redhat # location -- it *should* pick out the right thing to do based on the # .rpmmacros file, but you can still use BUILDDIR to override that. TESTBUILDDIR=$(shell [ -f ${HOME}/.rpmmacros ] && awk '/^%_topdir/ {print $$2}' ${HOME}/.rpmmacros) ifdef BUILDDIR #BUILDDIR:=$(BUILDDIR,/=) else BUILDDIR=$(shell if [ -d "${TESTBUILDDIR}" ] ; then \ echo ${TESTBUILDDIR} | sed "s^/$$^^" ; \ elif [ -d "/usr/src/redhat" ] ; then \ echo "/usr/src/redhat" ; \ elif [ -d "/usr/src/packages" ] ; then \ echo "/usr/src/packages" ; \ else \ echo "/tmp/${NAME}" ; \ fi ;) endif RPMHOSTVENDOR=$(shell rpm --eval "%{_host_vendor}") ifndef DISTRO DISTRO=$(shell if [ -f /etc/slackware-version ] ; then \ echo slackware ; \ elif [ -f /etc/debian_version ] ; then \ echo debian ;\ elif [ ${RPMHOSTVENDOR} = "suse" ] ; then \ echo suse ;\ elif [ ${RPMHOSTVENDOR} = "redhat" ] ; then \ echo rhel4 ;\ else \ echo unknown ;\ fi) endif RPMARG=--define "_topdir ${BUILDDIR}" \ --define "vendor NOVELL, Inc." \ --define "distribution ${DISTRIBUTION}" \ --define "debug_package %{nil}" \ --define "immunix_version ${VERSION}" \ $(shell [ -d ${BUILDDIR}/BUILDROOT ] && echo --define \"buildroot ${BUILDDIR}/BUILDROOT\") \ $(shell [ -n "${DISTRO}" ] && echo --define \"distro ${DISTRO}\") #REPO_VERSION=$(shell if [ -x /usr/bin/svn ] ; then \ # if ! /usr/bin/svn info -r HEAD . 2> /dev/null | grep "^Last Changed Rev:" | sed "s/^Last Changed Rev: //" ; then \ # /usr/bin/svn info . 2> /dev/null | grep "^Last Changed Rev:" | sed "s/^Last Changed Rev: //" ; \ # fi ; \ # fi) REPO_VERSION=$(shell if [ -x /usr/bin/svn ] ; then \ /usr/bin/svn info . 2> /dev/null | grep "^Last Changed Rev:" | sed "s/^Last Changed Rev: //" ; \ fi) REPO_URL=$(shell if [ -x /usr/bin/svn ] ; then \ /usr/bin/svn info . 2> /dev/null | grep "^URL:" | sed "s/^URL: //" ; \ fi) COMMON_REPO_URL=$(shell if [ -x /usr/bin/svn ] ; then \ /usr/bin/svn info $(COMMONDIR) 2> /dev/null | grep "^URL:" | sed "s/^URL: //" ; \ fi) ifdef EXTERNAL_PACKAGE RPMARG+=--define "_sourcedir $(shell pwd)" endif ifndef SPECFILE SPECFILE = $(NAME).spec endif RELEASE = $(shell rpm -q --specfile --define "_sourcedir ." ${RPMARG} --qf "%{RELEASE}" ${SPECFILE}) RELEASE_DIR = $(NAME)-$(VERSION) TARBALL = $(NAME)-$(VERSION)-${REPO_VERSION}.tar.gz TAR = /bin/tar czvp -h --exclude .svn --exclude CVS --exclude .cvsignore --exclude ${TARBALL} --exclude ${RELEASE_DIR}/${RELEASE_DIR} $(shell test -f ${NAME}.exclude && echo "-X ${NAME}.exclude") LDCONFIG = /sbin/ldconfig CVSPKG_VERSION=$(shell rpm -q --specfile --define "_sourcedir ." ${RPMARG} ${SPECFILE} | head -1 | tr "." "_") RPMSUBDIRS=SOURCES SPECS BUILD BUILDROOT SRPMS RPMS/i386 RPMS/i586 \ RPMS/i686 RPMS/athlon RPMS/noarch RPMS/x86_64 BUILDRPMSUBDIRS=$(foreach subdir, $(RPMSUBDIRS), $(BUILDDIR)/$(subdir)) .PHONY: cvs_tag cvs_tag: cvs tag IMMUNIX-${CVSPKG_VERSION} .PHONY: checkin checkin: if cvs -q up -d | grep -q "^\?" ; then echo "Hey! You have" \ "files in the directory you have not added into cvs."; exit 1; \ fi cvs ci make cvs_tag ifdef EXTERNAL_PACKAGE .PHONY: rpm rpm: clean $(BUILDRPMSUBDIRS) rpmbuild -ba ${RPMARG} ${SPECFILE} else .PHONY: rpm rpm: clean $(TARBALL) $(BUILDRPMSUBDIRS) cp $(TARBALL) $(BUILDDIR)/SOURCES/ cp ${SPECFILE} $(BUILDDIR)/SPECS/ rpmbuild -ba ${RPMARG} ${SPECFILE} .PHONY: ${SPECFILE} ${SPECFILE}: ${SPECFILE}.in sed -e "s/@@immunix_version@@/${VERSION}/g" \ -e "s/@@repo_version@@/${REPO_VERSION}/g" $< > $@ ${TARBALL}: clean ${SPECFILE} -rm -rf $(RELEASE_DIR) mkdir $(RELEASE_DIR) $(TAR) . | tar xz -C $(RELEASE_DIR) $(TAR) -f $@ $(RELEASE_DIR) rm -rf $(RELEASE_DIR) .PHONY: tarball tarball: clean $(TARBALL) .PHONY: dist dist: clean $(SPECFILE) -rm -rf $(RELEASE_DIR) svn export -r $(REPO_VERSION) $(REPO_URL) $(RELEASE_DIR) svn export $(COMMON_REPO_URL) $(RELEASE_DIR)/common $(TAR) -f $(TARBALL) $(RELEASE_DIR) rm -rf $(RELEASE_DIR) endif .PHONY: version .SILENT: version version: rpm -q --define "_sourcedir ." ${RPMARG} --specfile ${SPECFILE} .PHONY: build_dir build_dir: $(BUILDRPMSUBDIRS) $(BUILDRPMSUBDIRS): mkdir -p $(BUILDRPMSUBDIRS) # ===================== # Slackware poo # ===================== .PHONY: slack slack: rm -rf ${BUILDDIR} mkdir -p ${BUILDDIR}/install make install DESTDIR=${BUILDDIR} DISTRO=slackware # comment line is there so grep always has something to match ( echo "# install script pulled from ${SPECFILE}" ; rpm -q --specfile --define "_sourcedir ." ${RPMARG} --qf "%{POSTIN}\n" ${SPECFILE}) | grep -v "^(none)$$" >> ${BUILDDIR}/install/doinst.sh ( cd ${BUILDDIR} && makepkg -l y -c y -p ${PWD}/${NAME}-${VERSION}-${RELEASE}.tgz ) # ===================== # Debian poo # ===================== .PHONY: deb deb: ${TARBALL} rm -rf ${BUILDDIR} mkdir -p ${BUILDDIR} tar -xvzf ${TARBALL} -C ${BUILDDIR} ( cd ${BUILDDIR}/${RELEASE_DIR} && sh -c "DEBFULLNAME='NOVELL, Inc' dh_make -e apparmor-general@forge.novell.com --library -f ~/svn/immunix/immunix/libimmunix/libimmunix-2.0.tar.gz << EOM \ \ EOM" ) make ${NAME}-deb -C ${BUILDDIR}/${RELEASE_DIR} # ( cd ${BUILDDIR}/${RELEASE_DIR} && dpkg-buildpackage -b -sd -rfakeroot) DEBIAN_DISTRO=stable DEB_CHANGELOG_OUTPUT="${NAME} (${VERSION}-${RELEASE}) ${DEBIAN_DISTRO}; urgency=low\n\ \n * Automatically generated by the AppArmor Build System.\n\ \n -- AppArmor Development Team $(shell date -R)" .PHONY: debian/changelog debian/changelog: echo -e ${DEB_CHANGELOG_OUTPUT} > $@ A2PS_ARGS=-Ec -g --line-numbers=1 ENSCRIPT_ARGS=-C -2jGr -f Courier6 -E %.c.ps: %.c #a2ps ${A2PS_ARGS} $< -o $@ enscript ${ENSCRIPT_ARGS} -o $@ $< %.pm.ps: %.pm enscript ${ENSCRIPT_ARGS} -o $@ $<