Prechádzať zdrojové kódy

A first try to incorporate cleanfeed - needs testing. Furhtermore a reasonable default config has to be defined.

Christoph Schug 24 rokov pred
rodič
commit
8241c58dbd
1 zmenil súbory, kde vykonal 110 pridanie a 82 odobranie
  1. 110 82
      inn/inn.spec

+ 110 - 82
inn/inn.spec

@@ -23,6 +23,10 @@
 ##  SUCH DAMAGE.
 ##
 
+#   package versions
+%define       V_inn        2.3.3
+%define       V_cleanfeed  20010805
+
 #   package information
 Name:         inn
 Summary:      InterNetNews Usenet Server
@@ -32,19 +36,20 @@ Packager:     The OpenPKG Project
 Distribution: OpenPKG [REL]
 Group:        News
 License:      ISC
-Version:      2.3.3
-Release:      20020611
+Version:      %{V_inn}
+Release:      20020612
 
 #   list of sources
-Source0:      ftp://ftp.isc.org/isc/inn/inn-%{version}.tar.gz
-Source1:      ftp://ftp.openpkg.org/DST/inn/fakesyslog.tar.gz
-Source2:      rc.inn
+Source0:      ftp://ftp.isc.org/isc/inn/inn-%{V_inn}.tar.gz
+Source1:      http://www.bofh.it/~md/cleanfeed/cleanfeed-%{V_cleanfeed}.tgz
+Source2:      ftp://ftp.openpkg.org/DST/inn/fakesyslog.tar.gz
+Source3:      rc.inn
 
 #   build information
 Prefix:       %{l_prefix}
 BuildRoot:    %{l_buildroot}
 BuildPreReq:  OpenPKG, openpkg >= 20020206, make, perl, db3, openssl, bison, flex
-PreReq:       OpenPKG, openpkg >= 20020206, perl, MTA
+PreReq:       OpenPKG, openpkg >= 20020206, perl, perl-crypto, MTA
 AutoReq:      no
 AutoReqProv:  no
 
@@ -56,6 +61,7 @@ AutoReqProv:  no
 %prep
     %setup0 -q -c
     %setup1 -q -T -D -a 1
+    %setup2 -q -T -D -a 2
 
 %build
     #   make sure INN finds our own files
@@ -72,7 +78,7 @@ AutoReqProv:  no
       %{l_make} %{l_mflags}
     )
 
-    cd inn-%{version}
+    cd inn-%{V_inn}
 
     #   adjust some too strange INN paths
     %{l_shtool} subst \
@@ -118,89 +124,111 @@ AutoReqProv:  no
 %install
     rm -rf $RPM_BUILD_ROOT
 
-    cd inn-%{version}
-
-    #   determine current user and group
-    thisuser=`%{l_shtool} echo -e '%u'`
-    thisgroup=`%{l_shtool} echo -e '%g'`
-    if [ ".$thisgroup" = . ]; then
-        thisgroup="$thisuser"
-    fi
-
-    #   adjust INN installation procedure
-    %{l_shtool} subst \
-        -e "s;^\\(prefix.*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix};" \
-        -e "s;^\\(PATH.*=[    ]*\\)\\(%{l_prefix}\\);\\1 $RPM_BUILD_ROOT\\2;" \
-        -e "s;^\\(NEWSUSER.*=\\).*;\\1 $thisuser;" \
-        -e "s;^\\(NEWSGROUP.*=\\).*;\\1 $thisgroup;" \
-        -e "s;^\\(OWNER.*=\\).*;\\1;" \
-        -e "s;^\\(ROWNER.*=\\).*;\\1;" \
-        Makefile.global
-
-    #   perform installation procedure
-    %{l_make} %{l_mflags} install
-
-    #   make some programs manually accessible
-    %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/bin/
-    for bin in controlbatch controlchan news2mail startinnfeed overchan \
-        archive innmail innconfval ctlinnd inews rnews nntpsend; do
-        ln $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/$bin \
-           $RPM_BUILD_ROOT%{l_prefix}/bin/$bin
-    done
-
-    #   strip installation
-    rm -f $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/filter/*.py
-    rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/inn/*.tcl
-    rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/inn/lib*.a
-    rm -f $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/ovdb_upgrade
-    ln $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/ovdb_recover \
-       $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/ovdb_upgrade
-    strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
-
-    #   adjust configuration
-    ( echo ''
-      echo '# dummy entry to make INN happy as long as'
-      echo '# this server has no real newsfeeds configured.'
-      echo 'dummy-feed:!*::'
-      echo ''
-    ) >>$RPM_BUILD_ROOT%{l_prefix}/etc/inn/newsfeeds
-    ( echo ''
-      echo '# use the traditional spool area for storage'
-      echo 'method tradspool {'
-      echo '       newsgroups: *'
-      echo '       class: 1'
-      echo '}'
-    ) >>$RPM_BUILD_ROOT%{l_prefix}/etc/inn/storage.conf
-
-    #   create initial history database
-    ( cd $RPM_BUILD_ROOT%{l_prefix}/var/inn/db
-      touch history
-      INNCONF=$RPM_BUILD_ROOT%{l_prefix}/etc/inn/inn.conf \
-      $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/makedbz -i -f ./history
-      chmod 644 history*
+    #   install INN
+    ( cd inn-%{V_inn}
+
+      #   determine current user and group
+      thisuser=`%{l_shtool} echo -e '%u'`
+      thisgroup=`%{l_shtool} echo -e '%g'`
+      if [ ".$thisgroup" = . ]; then
+          thisgroup="$thisuser"
+      fi
+
+      #   adjust INN installation procedure
+      %{l_shtool} subst \
+          -e "s;^\\(prefix.*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix};" \
+          -e "s;^\\(PATH.*=[    ]*\\)\\(%{l_prefix}\\);\\1 $RPM_BUILD_ROOT\\2;" \
+          -e "s;^\\(NEWSUSER.*=\\).*;\\1 $thisuser;" \
+          -e "s;^\\(NEWSGROUP.*=\\).*;\\1 $thisgroup;" \
+          -e "s;^\\(OWNER.*=\\).*;\\1;" \
+          -e "s;^\\(ROWNER.*=\\).*;\\1;" \
+          Makefile.global
+
+      #   perform installation procedure
+      %{l_make} %{l_mflags} install
+
+      #   make some programs manually accessible
+      %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/bin/
+      for bin in controlbatch controlchan news2mail startinnfeed overchan \
+          archive innmail innconfval ctlinnd inews rnews nntpsend; do
+          ln $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/$bin \
+             $RPM_BUILD_ROOT%{l_prefix}/bin/$bin
+      done
+
+      #   strip installation
+      rm -f $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/filter/*.py
+      rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/inn/*.tcl
+      rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/inn/lib*.a
+      rm -f $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/ovdb_upgrade
+      ln $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/ovdb_recover \
+         $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/ovdb_upgrade
+      strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
+
+      #   adjust configuration
+      ( echo ''
+        echo '# dummy entry to make INN happy as long as'
+        echo '# this server has no real newsfeeds configured.'
+        echo 'dummy-feed:!*::'
+        echo ''
+      ) >>$RPM_BUILD_ROOT%{l_prefix}/etc/inn/newsfeeds
+      ( echo ''
+        echo '# use the traditional spool area for storage'
+        echo 'method tradspool {'
+        echo '       newsgroups: *'
+        echo '       class: 1'
+        echo '}'
+      ) >>$RPM_BUILD_ROOT%{l_prefix}/etc/inn/storage.conf
+
+      #   create initial history database
+      ( cd $RPM_BUILD_ROOT%{l_prefix}/var/inn/db
+        touch history
+        INNCONF=$RPM_BUILD_ROOT%{l_prefix}/etc/inn/inn.conf \
+        $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/makedbz -i -f ./history
+        chmod 644 history*
+      )
+
+      #   adjust permissions
+      chmod 664 $RPM_BUILD_ROOT%{l_prefix}/var/inn/db/active
+
+      #   create empty logfiles
+      touch $RPM_BUILD_ROOT%{l_prefix}/var/inn/log/news.log
+
+      #   install run-command script
+      %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
+      %{l_shtool} install -c -m 755 \
+          -e 's;@l_prefix@;%{l_prefix};g' \
+          -e 's;@l_musr@;%{l_musr};g' \
+          -e 's;@l_mgrp@;%{l_mgrp};g' \
+          %{SOURCE rc.inn} \
+          $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
     )
 
-    #   adjust permissions
-    chmod 664 $RPM_BUILD_ROOT%{l_prefix}/var/inn/db/active
-
-    #   create empty logfiles
-    touch $RPM_BUILD_ROOT%{l_prefix}/var/inn/log/news.log
-
-    #   install run-command script
-    %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
-    %{l_shtool} install -c -m 755 \
-        -e 's;@l_prefix@;%{l_prefix};g' \
-        -e 's;@l_musr@;%{l_musr};g' \
-        -e 's;@l_mgrp@;%{l_mgrp};g' \
-        %{SOURCE rc.inn} \
-        $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
+    #   install cleanfeed
+    ( cd cleanfeed-%{V_cleanfeed}
+      %{l_shtool} subst \
+          -e 's;^\($config_dir.*=\).*;\1 "%{l_prefix}/etc/inn"\;;' \
+          cleanfeed
+      ( echo "#!%{l_prefix}/bin/perl"
+        cat cleanfeed
+      ) >filter_innd.pl
+
+      #   FIXME: provide a suitable default config
+      cp cleanfeed.local.sample cleanfeed.local
+
+      %{l_shtool} install -c -m 755 \
+          filter_innd.pl \
+          $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/filter/
+      %{l_shtool} install -c -m 644 \
+          cleanfeed.local \
+          $RPM_BUILD_ROOT%{l_prefix}/etc/inn/
+    )
 
     #   strip binaries
     strip $RPM_BUILD_ROOT%{l_prefix}/bin/*         2> /dev/null || true
     strip $RPM_BUILD_ROOT%{l_prefix}/libexec/inn/* 2> /dev/null || true
 
     #   determine file list
-    %{l_rpmtool} files -v -o../files -r$RPM_BUILD_ROOT \
+    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
         %{l_files_std} \
         '%config %{l_prefix}/etc/inn/*' \
         '%attr(4550,root,%{l_mgrp}) %{l_prefix}/bin/rnews' \