The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# $Id$
# -*- perl -*-

use strict;
use warnings;
use ExtUtils::MakeMaker;

WriteMakefile(
              NAME => "Test-AutoBuild",
              VERSION_FROM => 'lib/Test/AutoBuild.pm',
              AUTHOR => "Daniel Berrange (dan[at]berrange[dot]com)",
              EXE_FILES => ['bin/auto-build', 'bin/auto-build-make-root', 'bin/auto-build-clean-root'],
              NO_META => 1,
              PREREQ_PM => {
                  'BSD::Resource' => "1.10",
                  'Carp' => '0',
                  'Class::MethodMaker' => '0',
		  'Config' => '0',
		  'Cwd' => '0',
                  'Config::Record' => '1.1.0',
		  'Data::Dumper' => '0',
                  'Date::Manip' => '0',
                  'Digest::MD5' => '0',
                  'Fcntl' => '0',
                  'File::Copy' => '0',
                  'File::Find' => '0',
		  'File::Glob' => '0',
                  'File::Path' => '0',
		  'File::ReadBackwards' => '0',
		  'File::Spec' => '0',
		  'File::stat' => '0',
		  'IO::File' => '0',
                  'IO::Scalar' => '0',
		  'List::Util' => '0',
                  'Log::Log4perl' => "0",
                  'Net::SMTP' => "2.15",
                  'POSIX' => '0',
		  'Storable' => '0',
		  'Symbol' => '0',
                  'Sys::Hostname' => '0',
                  'Template' => '0',
		  'Test::More' => '0',
		  'XML::Simple' => '0',
              },
              dist =>
              {
                  COMPRESS => 'gzip --force --best',
              },
              clean =>
              {
                  FILES => '*.bak *~',
              },
              depend => {
                  Makefile => '$(VERSION_FROM)',
                  #'perl-Test-AutoBuild.spec' => '$(VERSION_FROM)',
                  dist => 'perl-Test-AutoBuild.spec META.yml',
              },
              realclean => {
                  FILES => 'Test-AutoBuild-*.tar.gz perl-Test-AutoBuild.spec',
              },
              );

package MY;

sub postamble {
    '
WITH_SELINUX    = 0

# NB do not use prefix here
SELINUXDEV   = /usr/share/selinux/devel

pure_all ::
	if [ -d "$(SELINUXDEV)" -a "$(WITH_SELINUX)" = "1" ] ; then make -C conf/selinux ; fi

clean ::
	if [ -d "$(SELINUXDEV)" -a "$(WITH_SELINUX)" = "1" ] ; then make -C conf/selinux clean ; fi

HTMLDIR = blib/html

HTMLURLPREFIX = /
HTMLPODS = $(MAN3PODS:lib/%.pm=$(HTMLDIR)/%.html)

MAN5EXT = 5
INST_MAN5DIR = blib/man5
INST_SYSCONF = blib/sysconf
INST_SELINUX = blib/selinux

INSTALLSYSCONF = $(PERLPREFIX)/etc
DESTINSTALLSYSCONF = $(DESTDIR)/$(INSTALLSYSCONF)
INSTALLSELINUX = $(PERLPREFIX)/share/selinux
DESTINSTALLSELINUX = $(DESTDIR)/$(INSTALLSELINUX)

$(INST_MAN5DIR)/.exists :: $(INST_MAN3DIR)/.exists
	$(NOECHO) $(MKPATH) $(INST_MAN5DIR)
	$(NOECHO) $(EQUALIZE_TIMESTAMP) $(INST_MAN3DIR)/.exists $(INST_MAN5DIR)/.exists
	-$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_MAN5DIR)

$(INST_SYSCONF)/.exists :: $(INST_MAN3DIR)/.exists
	$(NOECHO) $(MKPATH) $(INST_SYSCONF)
	$(NOECHO) $(MKPATH) $(INST_SYSCONF)/templates
	$(NOECHO) $(MKPATH) $(INST_SYSCONF)/cron
	$(NOECHO) $(MKPATH) $(INST_SYSCONF)/httpd
	$(NOECHO) $(MKPATH) $(INST_SYSCONF)/engine
	$(NOECHO) $(EQUALIZE_TIMESTAMP) $(INST_MAN3DIR)/.exists $(INST_SYSCONF)/.exists
	-$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_SYSCONF)

$(INST_SELINUX)/.exists :: $(INST_MAN3DIR)/.exists
	$(NOECHO) $(MKPATH) $(INST_SELINUX)
	$(NOECHO) $(EQUALIZE_TIMESTAMP) $(INST_MAN3DIR)/.exists $(INST_SELINUX)/.exists
	-$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_SELINUX)

all:: manify5pods prepconf prepscripts prepselinux

manify5pods: $(INST_MAN5DIR)/.exists conf/auto-build.conf.pod
	$(NOECHO) $(POD2MAN_EXE) --section=5 --perm_rw=$(PERM_RW)\
          conf/auto-build.conf.pod $(INST_MAN5DIR)/auto-build.conf.$(MAN5EXT)

prepconf: $(INST_SYSCONF)/.exists
	$(NOECHO) for i in conf/*.conf conf/engine/*.conf conf/cron/*.conf conf/httpd/*.conf; do \
		conf=`echo $$i | sed -e \'s/conf\///\'`; \
                $(RM_F) $(INST_SYSCONF)/$$conf; \
                $(CP) $$i $(INST_SYSCONF)/$$conf; \
                $(FIXIN) $(INST_SYSCONF)/$$conf; \
                $(CHMOD) $(PERM_RW) $(INST_SYSCONF)/$$conf; \
	done
	$(NOECHO) for i in templates/*.txt templates/*.html templates/*.tt templates/*.css templates/*.rss templates/*.png ; do \
                $(RM_F) $(INST_SYSCONF)/$$i; \
                $(CP) $$i $(INST_SYSCONF)/$$i; \
                $(FIXIN) $(INST_SYSCONF)/$$i; \
                $(CHMOD) $(PERM_RW) $(INST_SYSCONF)/$$i; \
        done

prepscripts: $(INST_SCRIPT)/.exists
	if [ -d "$(SELINUXDEV)" -a "$(WITH_SELINUX)" = "1" ]; then \
		$(RM_F) $(INST_SCRIPT)/auto-build-secure; \
		$(CP) bin/auto-build $(INST_SCRIPT)/auto-build-secure; \
		$(FIXIN) $(INST_SCRIPT)/auto-build-secure; \
		$(CHMOD) $(PERM_RWX) $(INST_SCRIPT)/auto-build-secure; \
	fi

prepselinux: $(INST_SELINUX)/.exists
	if [ -d "$(SELINUXDEV)" -a "$(WITH_SELINUX)" = "1" ]; then \
		$(RM_F) $(INST_SELINUX)/auto-build.pp; \
		$(CP) conf/selinux/auto-build.pp $(INST_SELINUX)/auto-build.pp; \
		$(FIXIN) $(INST_SELINUX)/auto-build.pp; \
		$(CHMOD) $(PERM_RW) $(INST_SELINUX)/auto-build.pp; \
	fi

INSTALLMAN5 = $(PERLPREFIX)/share/man/man5
DESTINSTALLMAN5 = $(DESTDIR)$(INSTALLMAN5)
INSTALLSITEMAN5 = $(SITEPREFIX)/share/man/man5
DESTINSTALLSITEMAN5 = $(DESTDIR)$(INSTALLSITEMAN5)
INSTALLVENDORMAN5 = $(VENDORPREFIX)/share/man/man5
DESTINSTALLVENDORMAN5 = $(DESTDIR)$(INSTALLVENDORMAN5)

pure_perl_install ::
	$(MOD_INSTALL) $(INST_MAN5DIR) $(DESTINSTALLMAN5)
	$(MOD_INSTALL) $(INST_SYSCONF) $(DESTINSTALLSYSCONF)/auto-build.d
	$(MOD_INSTALL) $(INST_SELINUX) $(DESTINSTALLSELINUX)/packages

pure_site_install ::
	$(MOD_INSTALL) $(INST_MAN5DIR) $(DESTINSTALLSITEMAN5)
	$(MOD_INSTALL) $(INST_SYSCONF) $(DESTINSTALLSYSCONF)/auto-build.d
	$(MOD_INSTALL) $(INST_SELINUX) $(DESTINSTALLSELINUX)/packages

pure_vendor_install ::
	$(MOD_INSTALL) $(INST_MAN5DIR) $(DESTINSTALLVENDORMAN5)
	$(MOD_INSTALL) $(INST_SYSCONF) $(DESTINSTALLSYSCONF)/auto-build.d
	$(MOD_INSTALL) $(INST_SELINUX) $(DESTINSTALLSELINUX)/packages


htmlifypods: $(HTMLDIR) $(HTMLPODS)

$(HTMLDIR):
	mkdir $@

$(HTMLDIR)/%.html: lib/%.pm
	mkdir -p `dirname $@`
	pod2html --htmlroot=$(HTMLURLPREFIX) --infile=$< --outfile=$@ --podpath=$(HTMLDIR)

';
}

sub test {
    my $self = shift;
    my $mm_test = $self->SUPER::test(@_);

    return '
test :: META.yml
' . $mm_test;
  }

__END__