[syslog-ng] cygwin-packaging (was Re: [patch] Fixes for 2.0.7 on not ipv6 aware systems)

Corinna Vinschen vinschen at redhat.com
Mon Jan 14 17:09:15 CET 2008


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


More information about the syslog-ng mailing list