# $Id: Portfile,v 1.16 2006/02/11 07:31:11 olegb Exp $ PortSystem 1.0 name cfengine version 2.1.18 categories sysutils maintainers darwinports@opendarwin.org description a tool for setting up and maintaining computer systems long_description Cfengine, or the configuration engine is an \ autonomous agent and a middle to high level \ policy language for building expert systems \ which administrate and configure large computer \ networks. homepage http://www.cfengine.org/ master_sites ftp://ftp.iu.hio.no/pub/cfengine/ \ ftp://sunsite.uio.no/pub/cfengine/ \ http://ftp.us.xemacs.org/ftp/pub/cfengine/cfengine-ftp/ checksums sha1 4f1350d9cb052443df105fa080a39dd07726dfec platforms darwin depends_lib lib:libdb-4:db4 \ lib:libssl.0.9:openssl \ lib:libpcreposix:pcre patchfiles patch-proto.c post-patch { cd ${worksrcpath} foreach manfile [glob doc/*.8] { reinplace "s|/usr/local|${prefix}|g" $manfile reinplace "s|/var/cfengine|${prefix}&|g" $manfile } } set cfworkdir ${prefix}/var/cfengine configure.args --mandir='\${prefix}/share/man' \ --infodir='\${prefix}/share/info' \ --with-workdir="${cfworkdir}" \ --with-berkeleydb=default \ --with-openssl=default \ --with-pcre=default \ --with-docs build.args ps_DATA= destroot.args ps_DATA= pre-destroot { if {$env(USER) != "root"} { ui_msg "-----------------------------------------------------------" ui_msg "Note that you are not running as root, so files installed" ui_msg "by this port will not end up with proper ownership and" ui_msg "likely not work correctly with ${name}." ui_msg "-----------------------------------------------------------" } } destroot.keepdirs ${destroot}${cfworkdir}/bin \ ${destroot}${cfworkdir}/inputs \ ${destroot}${cfworkdir}/modules \ ${destroot}${cfworkdir}/outputs \ ${destroot}${cfworkdir}/ppkeys \ ${destroot}${cfworkdir}/rpc_in \ ${destroot}${cfworkdir}/rpc_out \ ${destroot}${cfworkdir}/state post-destroot { # Create cfengine directories xinstall -d -m 0755 ${destroot}${cfworkdir} # Create cfengine sub-directories foreach subdir {bin modules state} { xinstall -d -m 0755 ${destroot}${cfworkdir}/${subdir} } foreach subdir {inputs masterfiles/inputs outputs ppkeys rpc_in rpc_out} { xinstall -d -m 0700 ${destroot}${cfworkdir}/${subdir} } # Create distribution sample conf files set hostname [exec hostname] set host [lindex [split ${hostname} {.}] 0] set domain [join [lrange [split ${hostname} {.}] 1 end] {.}] set timezone [exec date +%Z] foreach conf {cfagent.conf cfservd.conf update.conf cfrun.hosts} { xinstall -m 0644 ${filespath}/${conf}.in \ ${destroot}${cfworkdir}/masterfiles/inputs/${conf}-dist reinplace "s|__PREFIX|${prefix}|g" \ ${destroot}${cfworkdir}/masterfiles/inputs/${conf}-dist reinplace "s|__CFWORKDIR|${cfworkdir}|g" \ ${destroot}${cfworkdir}/masterfiles/inputs/${conf}-dist reinplace "s|__HOST|${host}|g" \ ${destroot}${cfworkdir}/masterfiles/inputs/${conf}-dist reinplace "s|__DOMAIN|${domain}|g" \ ${destroot}${cfworkdir}/masterfiles/inputs/${conf}-dist reinplace "s|__TIMEZONE|${timezone}|g" \ ${destroot}${cfworkdir}/masterfiles/inputs/${conf}-dist } # Create startup rc script (if non-Darwin) if {![variant_isset darwin]} { xinstall -d -m 0755 ${destroot}${prefix}/etc/rc.d xinstall -m 0755 ${filespath}/${name}.sh.in \ ${destroot}${prefix}/etc/rc.d/${name}.sh reinplace "s|__PREFIX|${prefix}|" \ ${destroot}${prefix}/etc/rc.d/${name}.sh reinplace "s|__CFWORKDIR|${cfworkdir}|" \ ${destroot}${prefix}/etc/rc.d/${name}.sh } } post-activate { # Make sure initial conf files are present and setup correctly if {![file exists ${cfworkdir}/inputs/update.conf]} { xinstall -m 0644 ${cfworkdir}/masterfiles/inputs/update.conf-dist \ ${cfworkdir}/inputs/update.conf } foreach conf {cfagent.conf cfservd.conf update.conf cfrun.hosts} { if {![file exists ${cfworkdir}/masterfiles/inputs/${conf}]} { xinstall -m 0644 ${cfworkdir}/masterfiles/inputs/${conf}-dist \ ${cfworkdir}/masterfiles/inputs/${conf} } } # Check for root public-private keys, create if missing if {![file exists ${cfworkdir}/ppkeys/localhost.priv] \ || ![file exists ${cfworkdir}/ppkeys/localhost.pub]} { if {[file exists ${cfworkdir}/ppkeys/localhost.priv]} { file delete -force ${cfworkdir}/ppkeys/localhost.priv } if {[file exists ${cfworkdir}/ppkeys/localhost.pub]} { file delete -force ${cfworkdir}/ppkeys/localhost.pub } system "${prefix}/sbin/cfkey" } } variant psdocs { depends_build bin:tex:teTeX \ bin:texinfo:texinfo build.args-delete ps_DATA= destroot.args-delete ps_DATA= } platform darwin { startupitem.create yes startupitem.name Cfengine startupitem.start "\[ -x ${cfworkdir}/bin/cfservd \] && ${cfworkdir}/bin/cfservd" startupitem.start-append "\[ -x ${cfworkdir}/bin/cfenvd \] && ${cfworkdir}/bin/cfenvd -H" startupitem.start-append "\[ -x ${cfworkdir}/bin/cfexecd \] && ${cfworkdir}/bin/cfexecd" startupitem.start-append "(\[ -x ${cfworkdir}/bin/cfservd \] && \[ -x ${cfworkdir}/bin/cfenvd \] && \\" startupitem.start-append " \[ -x ${cfworkdir}/bin/cfexecd \] && \[ -x ${cfworkdir}/bin/cfagent \]) \\" startupitem.start-append "\t|| ${prefix}/sbin/cfagent --no-splay -f update.conf" startupitem.stop "/usr/bin/killall -SIGUSR1 cfagent 2>/dev/null" startupitem.stop-append "/usr/bin/killall -SIGUSR1 cfexecd 2>/dev/null" startupitem.stop-append "/usr/bin/killall -SIGUSR1 cfenvd 2>/dev/null" startupitem.stop-append "/usr/bin/killall -SIGUSR1 cfservd 2>/dev/null" }