clamav/rc.clamav

Tue, 29 Mar 2011 20:04:34 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 29 Mar 2011 20:04:34 +0200
changeset 334
4a34d7a82eab
parent 233
f5f6e93f3dc6
permissions
-rw-r--r--

Rework package yet again, correcting and introducing new buildconf logic:
Conditionally disable bootstrap stage comparison correctly, correct
english grammar, better find system as(1) and ld(1), indotruce detailed
optimization option messages, more completely guess cpu types, allow
profiled bootstrapping without a preinstalled GCC because many other
compilers have long since implemented 64-bit arithmetic, instruct make
to build sequentially (not in sparallel) when building a profiled
bootstrap as GCC online documents recommend, and generally improve
comment blocks.

The single most important correction in this changeset relates to the
GCC changed optimization policy since at least GCC 4.5, in which -march
is always passed and not always correctly guessed. In the case of this
package, allowing GCC to guess the architecture leads to wild build
errors at various subcomponents (zlib, libgcc, libiberty...) and
bootstrap stages. It seems quite platform specific, and the safest
approach to correcting this seems to be explicitly always specifying the
-march argument when bootstrapping GCC. Because the best choice 'native'
is not available when bootstrapping using a foreign (non GCC) compiler,
a guess is made according to rpmmacros l_platform in that case.

It is questionable as to whether these recent optimization changes
on the part of GCC or this package are compatible with each other,
or if either are complete or correct at all. At least applying these
corrections allows this package to build again in most cases test.

michael@227 1 #!@l_prefix@/bin/openpkg rc
michael@227 2 ##
michael@227 3 ## rc.clamav -- Run-Commands
michael@227 4 ##
michael@227 5
michael@227 6 %config
michael@227 7 clamav_enable="$openpkg_rc_def"
michael@227 8 clamav_daemons="clamd clamav-milter"
michael@227 9 clamav_clamd_flags=""
michael@227 10 clamav_clamav_milter_flags=""
michael@227 11 clamav_update="daily"
michael@227 12 clamav_log_prolog="true"
michael@227 13 clamav_log_epilog="true"
michael@227 14 clamav_log_numfiles="10"
michael@227 15 clamav_log_minsize="1M"
michael@227 16 clamav_log_complevel="9"
michael@227 17
michael@227 18 %common
michael@227 19 clamav_cfgfile="@l_prefix@/etc/clamav/clamd.conf"
michael@234 20 clamav_milter_cfgfile="@l_prefix@/etc/clamav/clamav-milter.conf"
michael@227 21 clamav_pidfile_clamd="@l_prefix@/var/clamav/clamd.pid"
michael@227 22 clamav_pidfile_clamav_milter="@l_prefix@/var/clamav/clamav-milter.pid"
michael@227 23 clamav_signal () {
michael@227 24 [ -f $clamav_pidfile_clamd ] \
michael@227 25 && kill -$1 `cat $clamav_pidfile_clamd`
michael@227 26 local rc_clamav_clamd=$?
michael@227 27 [ -f $clamav_pidfile_clamav_milter ] \
michael@227 28 && kill -$1 `cat $clamav_pidfile_clamav_milter`
michael@227 29 local rc_clamav_clamav_milter=$?
michael@227 30 [ $rc_clamav_clamd -eq 0 \
michael@227 31 -o $rc_clamav_clamav_milter -eq 0 ]
michael@227 32 }
michael@227 33
michael@227 34 %status -u @l_rusr@ -o
michael@227 35 clamav_usable="unknown"
michael@227 36 clamav_active="no"
michael@227 37 rcService clamav enable yes && \
michael@227 38 clamav_signal 0 && clamav_active="yes"
michael@227 39 echo "clamav_enable=\"$clamav_enable\""
michael@227 40 echo "clamav_usable=\"$clamav_usable\""
michael@227 41 echo "clamav_active=\"$clamav_active\""
michael@227 42
michael@227 43 %start -u @l_rusr@
michael@227 44 rcService clamav enable yes || exit 0
michael@227 45 rcService clamav active yes && exit 0
michael@227 46 for daemon in $clamav_daemons; do
michael@227 47 if [ ".$daemon" = ".clamd" ]; then
michael@227 48 @l_prefix@/sbin/clamd \
michael@227 49 --config-file=$clamav_cfgfile \
michael@227 50 $clamav_clamd_flags
michael@227 51 elif [ ".$daemon" = ".clamav-milter" -a -x @l_prefix@/sbin/clamav-milter ]; then
michael@227 52 ( umask 002
michael@227 53 @l_prefix@/sbin/clamav-milter \
michael@234 54 --config-file=$clamav_milter_cfgfile \
michael@234 55 $clamav_clamav_milter_flags
michael@227 56 ) || exit $?
michael@227 57 fi
michael@227 58 done
michael@227 59
michael@227 60 %stop -u @l_rusr@
michael@227 61 rcService clamav enable yes || exit 0
michael@227 62 rcService clamav active no && exit 0
michael@227 63 clamav_signal TERM
michael@227 64 rm -f $clamav_pidfile_clamd 2>/dev/null || true
michael@227 65 rm -f $clamav_pidfile_clamav_milter 2>/dev/null || true
michael@227 66
michael@227 67 %restart -u @l_rusr@
michael@227 68 rcService clamav enable yes || exit 0
michael@227 69 rcService clamav active no && exit 0
michael@227 70 rc clamav stop
michael@227 71 sleep 2
michael@227 72 rc clamav start
michael@227 73
michael@227 74 %quarterly -u @l_rusr@
michael@227 75 rcService clamav enable yes || exit 0
michael@227 76 if [ ".$clamav_update" = .quarterly ]; then
michael@227 77 @l_prefix@/bin/freshclam
michael@227 78 if [ $? -ge 10 ]; then exit $?; fi
michael@227 79 fi
michael@227 80
michael@227 81 %hourly -u @l_rusr@
michael@227 82 rcService clamav enable yes || exit 0
michael@227 83 if [ ".$clamav_update" = .hourly ]; then
michael@227 84 @l_prefix@/bin/freshclam
michael@227 85 if [ $? -ge 10 ]; then exit $?; fi
michael@227 86 fi
michael@227 87
michael@227 88 %daily -u @l_rusr@
michael@227 89 rcService clamav enable yes || exit 0
michael@227 90 if [ ".$clamav_update" = .daily ]; then
michael@227 91 @l_prefix@/bin/freshclam
michael@227 92 if [ $? -ge 10 ]; then exit $?; fi
michael@227 93 fi
michael@227 94 logfiles=""
michael@227 95 for daemon in freshclam $clamav_daemons; do
michael@227 96 logfiles="$logfiles @l_prefix@/var/clamav/$daemon.log"
michael@227 97 done
michael@227 98 shtool rotate -f \
michael@227 99 -n $clamav_log_numfiles -s $clamav_log_minsize -d \
michael@227 100 -z $clamav_log_complevel -o @l_rusr@ -g @l_rgrp@ -m 644 \
michael@227 101 -P "$clamav_log_prolog" \
michael@227 102 -E "$clamav_log_epilog; rc clamav restart" \
michael@227 103 $logfiles
michael@227 104
michael@227 105 %weekly -u @l_rusr@
michael@227 106 rcService clamav enable yes || exit 0
michael@227 107 if [ ".$clamav_update" = .weekly ]; then
michael@227 108 @l_prefix@/bin/freshclam
michael@227 109 if [ $? -ge 10 ]; then exit $?; fi
michael@227 110 fi
michael@227 111

mercurial