On Jan 14 15:18, Balazs Scheidler wrote:
On Mon, 2008-01-14 at 14:51 +0100, Corinna Vinschen wrote:
Would it be ok to add a contrib/cygwin subdir with these two scripts upstream? I have send the CLA to our legal dept but this might take some time. So I was wondering... do I need the CLA for the stuff under contrib as well?
No, contrib is for contributions, they are redistributed with the Premium Edition of syslog-ng, but in source format.
So if you submit patches against contrib/, I'm going to include that, and you don't need a CLA.
Thank you. It's always nice to be able to build upstream without having to tweak anything locally :) Here is a ChangeLog and the diff * contrib/cygwin-packaging/cygwin-postinstall: New script for packing Cygwin net distribution. * contrib/cygwin-packaging/syslog-ng-config: New script for run-time configuration of syslog-ng as part of a Cygwin net distribution. diff --git a/contrib/cygwin-packaging/cygwin-postinstall b/contrib/cygwin-packaging/cygwin-postinstall new file mode 100755 index 0000000..85daf28 --- /dev/null +++ b/contrib/cygwin-packaging/cygwin-postinstall @@ -0,0 +1,57 @@ +#!/bin/sh +DESTDIR="" +if [ -n "$1" ] +then + DESTDIR=$1 +fi +if [ ! -d "contrib/cygwin-packaging" ] +then + echo "Please run 'contrib/cygwin-packaging/cygwin-postinstall' from the top-level source directory." + exit 1 +fi +if [ ! -f "${DESTDIR}/usr/sbin/syslog-ng.exe" ] +then + echo "Please run 'make install-strip' first." + exit 2 +fi +if [ ! -f "config.log" ] +then + echo "Please run './configure' first." + echo "Have a look into 'contrib/cygwin-packaging/cygwin-postinstall' how to do it." + exit 3 +fi +mkdir -p "${DESTDIR}/usr/bin" +mkdir -p "${DESTDIR}/usr/share/doc/syslog-ng" +mkdir -p "${DESTDIR}/usr/share/doc/Cygwin" +cp contrib/cygwin-packaging/syslog-ng-config "${DESTDIR}/usr/bin" +cp -rp doc/examples/syslog-ng.conf.s* doc/reference/syslog-ng.[tx]* "${DESTDIR}/usr/share/doc/syslog-ng" +tar xzfC doc/reference/syslog-ng.html.tar.gz "${DESTDIR}/usr/share/doc/syslog-ng" +cat > "${DESTDIR}/usr/share/doc/Cygwin/syslog-ng.README" <<'EOF' +If you want to use syslog-ng, just run the /usr/bin/syslog-ng-config +script. This script will create a default configuration file +/etc/syslog-ng.conf and it will install syslog-ng as a service on NT +systems on request. + +Please note that you cannot use syslogd from the inetutils package +and syslog-ng together. Only one syslog daemon should run at a time. +The syslog-ng-config script, as well as the latest version of the +syslogd-config script are taking care of this when requested to install +as service. + +The syslog-ng package has been built using the following command +sequence from the top level source dir: + +./configure \ + --disable-ipv6 \ + --disable-tcp-wrapper \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir='$(prefix)/sbin' \ + --localstatedir=/var \ + --datadir='$(prefix)/share' \ + --mandir='$(prefix)/share/man' \ + --infodir='$(prefix)/share/info' +make +make install-strip +contrib/cygwin-packaging/cygwin-postinstall +EOF diff --git a/contrib/cygwin-packaging/syslog-ng-config b/contrib/cygwin-packaging/syslog-ng-config new file mode 100755 index 0000000..24738c5 --- /dev/null +++ b/contrib/cygwin-packaging/syslog-ng-config @@ -0,0 +1,284 @@ +#!/bin/sh +# +# syslog-ng-config, Copyright 2005, 2006 Corinna Vinschen +# +# This file is part of the Cygwin port of syslog-ng. + +# set -x + +# Subdirectory where the new package is being installed +PREFIX=/usr + +# Directory where the config files are stored +SYSCONFDIR=/etc +DEVDIR=/dev +LOGDIR=/var/log +RUNDIR=/var/run + +progname=$0 +auto_answer="" + +request() +{ + if [ "${auto_answer}" = "yes" ] + then + return 0 + elif [ "${auto_answer}" = "no" ] + then + return 1 + fi + + answer="" + while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ] + do + echo -n "$1 (yes/no) " + read answer + done + if [ "X${answer}" = "Xyes" ] + then + return 0 + else + return 1 + fi +} + +# Check options + +while : +do + case $# in + 0) + break + ;; + esac + + option=$1 + shift + + case "$option" in + -d | --debug ) + set -x + ;; + + -y | --yes ) + auto_answer=yes + ;; + + -n | --no ) + auto_answer=no + ;; + *) + echo "usage: ${progname} [OPTION]..." + echo + echo "This script creates a basic syslog-ng configuration." + echo + echo "Options:" + echo " --debug -d Enable shell's debug output." + echo " --yes -y Answer all questions with \"yes\" automatically." + echo " --no -n Answer all questions with \"no\" automatically." + echo + exit 1 + ;; + + esac +done + +# Check for ${SYSCONFDIR} directory + +if [ -e "${SYSCONFDIR}" -a ! -d "${SYSCONFDIR}" ] +then + echo + echo "${SYSCONFDIR} is existant but not a directory." + echo "Cannot create global configuration files." + echo + exit 1 +fi + +# Create it if necessary + +if [ ! -e "${SYSCONFDIR}" ] +then + mkdir "${SYSCONFDIR}" + if [ ! -e "${SYSCONFDIR}" ] + then + echo + echo "Creating ${SYSCONFDIR} directory failed." + echo + exit 1 + fi +fi +setfacl -m u:system:rwx "${SYSCONFDIR}" + +# Check for ${DEVDIR} directory + +if [ -e "${DEVDIR}" -a ! -d "${DEVDIR}" ] +then + echo + echo "${DEVDIR} is existant but not a directory." + echo "syslogging using syslog-ng will not work." + echo + exit 1 +fi + +# Create it if necessary + +if [ ! -e "${DEVDIR}" ] +then + mkdir "${DEVDIR}" + if [ ! -e "${DEVDIR}" ] + then + echo + echo "Creating ${DEVDIR} directory failed." + echo + exit 1 + fi +fi +setfacl -m u:system:rwx "${DEVDIR}" + +# Check for ${LOGDIR} directory + +if [ -e "${LOGDIR}" -a ! -d "${LOGDIR}" ] +then + echo + echo "${LOGDIR} is existant but not a directory." + echo "syslogging using syslog-ng will not work." + echo + exit 1 +fi + +# Create it if necessary + +if [ ! -e "${LOGDIR}" ] +then + mkdir -p "${LOGDIR}" + if [ ! -e "${LOGDIR}" ] + then + echo + echo "Creating ${LOGDIR} directory failed." + echo + exit 1 + fi +fi +setfacl -m u:system:rwx "${LOGDIR}" + +# Check for ${RUNDIR} directory + +if [ -e "${RUNDIR}" -a ! -d "${RUNDIR}" ] +then + echo + echo "${RUNDIR} is existant but not a directory." + echo "syslogging using syslog-ng will not work." + echo + exit 1 +fi + +# Create it if necessary + +if [ ! -e "${RUNDIR}" ] +then + mkdir -p "${RUNDIR}" + if [ ! -e "${RUNDIR}" ] + then + echo + echo "Creating ${RUNDIR} directory failed." + echo + exit 1 + fi +fi +setfacl -m u:system:rwx "${RUNDIR}" + +# Check if syslog-ng.conf exists. If yes, ask for overwriting + +if [ -f "${SYSCONFDIR}/syslog-ng.conf" ] +then + if request "Overwrite existing ${SYSCONFDIR}/syslog-ng.conf file?" + then + rm -f "${SYSCONFDIR}/syslog-ng.conf" + if [ -f "${SYSCONFDIR}/syslog-ng.conf" ] + then + echo "Can't overwrite. ${SYSCONFDIR}/syslog-ng.conf is write protected." + fi + fi +fi + +if [ ! -f "${SYSCONFDIR}/syslog-ng.conf" ] +then + echo "Creating default ${SYSCONFDIR}/syslog-ng.conf file" + cat > ${SYSCONFDIR}/syslog-ng.conf << EOF +options { + keep_hostname(yes); + chain_hostnames(no); + owner("system"); + group("root"); + perm(0664); + sync(0); +}; + +source applications { + unix-dgram("/dev/log"); + internal(); +}; + +source kernel { + file("/dev/kmsg", log_prefix("kernel: ")); +}; + +destination messages { + file("/var/log/messages"); +}; + +log { + source(applications); + destination(messages); +}; + +log { + source(kernel); + destination(messages); +}; +EOF +fi +setfacl -m u:system:rw- "${SYSCONFDIR}/syslog-ng.conf" + +# Check if running on NT +_sys="`uname`" +_nt=`expr "${_sys}" : "CYGWIN_NT"` +# On NT ask if syslog-ng should be installed as service +if [ ${_nt} -gt 0 ] +then + # Check if syslogd is installed and remove on user request. + if cygrunsrv -Q syslogd > /dev/null 2>&1 + then + echo "Warning: The syslogd service is already installed. You can not" + echo "run both, syslogd and syslog-ng in parallel." + echo + if request "Do you want to deinstall the syslogd service in favor of syslog-ng?" + then + cygrunsrv -E syslogd + cygrunsrv -R syslogd + fi + fi + # Install syslog-ng service if it is not already installed + if ! cygrunsrv -Q syslog-ng > /dev/null 2>&1 + then + echo + echo + echo "Warning: The following function requires administrator privileges!" + echo + echo "Do you want to install syslog-ng as service?" + if request "(Say \"no\" if it's already installed as service)" + then + if cygrunsrv -I syslog-ng -d "CYGWIN syslog-ng" -p /usr/sbin/syslog-ng -a -F + then + echo + echo "The service has been installed under LocalSystem account." + echo "To start the service, call \`net start syslog-ng' or \`cygrunsrv -S syslog-ng'." + echo + echo "Check ${SYSCONFDIR}/syslog-ng.conf first, if it suits your needs." + fi + fi + fi +fi + +echo +echo "Configuration finished. Have fun!" Corinna -- Corinna Vinschen Cygwin Project Co-Leader Red Hat