diff mbox

[V3,2/2] perl-mail-spamassassin: new package

Message ID 1449257217-8021-3-git-send-email-francois.perrad@gadz.org
State Superseded
Headers show

Commit Message

Francois Perrad Dec. 4, 2015, 7:26 p.m. UTC
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
 package/Config.in                                  |  1 +
 .../0001-without-host-perl-dependencies.patch      | 64 ++++++++++++++++++++++
 package/perl-mail-spamassassin/Config.in           | 26 +++++++++
 .../perl-mail-spamassassin.hash                    |  3 +
 .../perl-mail-spamassassin.mk                      | 31 +++++++++++
 5 files changed, 125 insertions(+)
 create mode 100644 package/perl-mail-spamassassin/0001-without-host-perl-dependencies.patch
 create mode 100644 package/perl-mail-spamassassin/Config.in
 create mode 100644 package/perl-mail-spamassassin/perl-mail-spamassassin.hash
 create mode 100644 package/perl-mail-spamassassin/perl-mail-spamassassin.mk

Comments

Bernd Kuhls Dec. 5, 2015, 11:09 p.m. UTC | #1
Hi Francois,

thank you very much for your patch, several months ago I tried to create 
a working Spamassassin package and failed, your patch works fine! I now 
have a working Spamassassin 3.4.1 daemon running on my buildroot 
machine :)

Please add perl-db-file as optional package, because

https://api.metacpan.org/source/KMCGRAIL/Mail-SpamAssassin-3.4.1/UPGRADE
"Note for Users Upgrading from SpamAssassin 2.5x
-----------------------------------------------

- Due to major reliability shortcomings in the database support libraries
  other than DB_File, we now require that the DB_File module be installed
  to use SpamAssassin's Bayes rules.

  SpamAssassin will still work without DB_File installed, but the Bayes
  support will be disabled."

using Spamassassin without a Bayes database makes not much sense:

ifeq ($(BR2_PACKAGE_PERL_DB_FILE),y)
PERL_MAIL_SPAMASSASSIN_DEPENDENCIES += perl-db-file
endif

An additional patch is needed to get a working perl-db-file module:
http://patchwork.ozlabs.org/patch/553054/

Furthermore the default paths produced by your package make not much 
sense:

$ grep "'make' time" output/target/usr/bin/spamassassin 
my $PREFIX          = '';             # substituted at 'make' time
my $DEF_RULES_DIR   = '/share/spamassassin';      # substituted at 'make' 
time
my $LOCAL_RULES_DIR = '/mail/spamassassin';    # substituted at 'make' 
time
my $LOCAL_STATE_DIR = '';    # substituted at 'make' time

I recommend this patch

-PERL_MAIL_SPAMASSASSIN_CONF_OPTS += CONTACT_ADDRESS="$(call qstrip,
$(BR2_PACKAGE_PERL_MAIL_SPAMASSASSIN_CONTACT_ADDRESS))"
+PERL_MAIL_SPAMASSASSIN_CONF_OPTS += \
+       CONTACT_ADDRESS="$(call qstrip,
$(BR2_PACKAGE_PERL_MAIL_SPAMASSASSIN_CONTACT_ADDRESS))" \
+       VENDORPREFIX=/usr \
+       INSTALLVENDORCONF=/etc/mail/spamassassin

to have paths like these:

$ grep "'make' time" output/target/usr/bin/spamassassin 
my $PREFIX          = '/usr';             # substituted at 'make' time
my $DEF_RULES_DIR   = '/usr/share/spamassassin';      # substituted at 
'make' time
my $LOCAL_RULES_DIR = '/etc/mail/spamassassin';    # substituted at 
'make' time
my $LOCAL_STATE_DIR = '/var/lib/spamassassin';    # substituted at 'make' 
time

Regards, Bernd
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index bdc3063..f0989d4 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -553,6 +553,7 @@  menu "Perl libraries/modules"
 	source "package/perl-libwww-perl/Config.in"
 	source "package/perl-lwp-mediatypes/Config.in"
 	source "package/perl-mail-dkim/Config.in"
+	source "package/perl-mail-spamassassin/Config.in"
 	source "package/perl-mailtools/Config.in"
 	source "package/perl-mime-base64/Config.in"
 	source "package/perl-mojolicious/Config.in"
diff --git a/package/perl-mail-spamassassin/0001-without-host-perl-dependencies.patch b/package/perl-mail-spamassassin/0001-without-host-perl-dependencies.patch
new file mode 100644
index 0000000..8edab10
--- /dev/null
+++ b/package/perl-mail-spamassassin/0001-without-host-perl-dependencies.patch
@@ -0,0 +1,64 @@ 
+Remove host-perl-* dependencies
+
+The module  Mail-SpamAssassin tries to do the following things:
+1) as usual CPAN module, install many .pm files in /usr/lib/perl5/site_perl/
+and few scripts in /usr/bin.
+No issue here.
+2) "compile" SpamAssassin rules, that requires to install/run SpamAssassin on the host side.
+As we don't want install host-perl modules, this step is disabled.
+Please, considere the installed script `sa-update` for installing the rules for the first time.
+3) spamc, an executable which embeds libperl
+The cross compilation is not handled, I obtain an host executable.
+This step is disabled (note: the option BUILD_SPAMC=yes/no is handled only on Windows)
+
+Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
+
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -133,10 +133,8 @@
+       'spamassassin.raw' => 'spamassassin',
+       'sa-learn.raw'     => 'sa-learn',
+       'sa-update.raw'    => 'sa-update',
+-      'sa-compile.raw'   => 'sa-compile',
+       'sa-awl.raw'       => 'sa-awl',
+       'sa-check_spamd.raw' => 'sa-check_spamd',
+-      'spamc/spamc.c'    => 'spamc/spamc$(EXE_EXT)',
+       'spamd/spamd.raw'  => 'spamd/spamd',
+     },
+ 
+@@ -304,16 +302,6 @@
+ 
+ ';
+ 
+-# check optional module versions
+-use lib 'lib';
+-use Mail::SpamAssassin::Util::DependencyInfo;
+-if (Mail::SpamAssassin::Util::DependencyInfo::long_diagnostics() != 0) {
+-  # missing required module?  die!
+-  # bug 5908: http://cpantest.grango.org/wiki/CPANAuthorNotes says
+-  # we should exit with a status of 0, but without creating Makefile
+-  exit 0;
+-}
+-
+ foreach my $file (@FILES_THAT_MUST_EXIST) {
+   open (TOUCH, ">>$file") or die "cannot touch '$file'";
+   close TOUCH;
+@@ -1013,7 +1001,7 @@
+ 
+ FIXBANG		= -Msharpbang \
+                   -Mconditional \
+-		  -DPERL_BIN="$(PERL_BIN)" \
++		  -DPERL_BIN="/usr/bin/perl" \
+ 		  -DPERL_WARN="$(PERL_WARN)" \
+ 		  -DPERL_TAINT="$(PERL_TAINT)"
+ 
+@@ -1023,7 +1011,7 @@
+ sa-learn: sa-learn.raw
+ 	$(PREPROCESS) $(FIXBYTES) $(FIXVARS) $(FIXBANG) -m$(PERM_RWX) -i$? -o$@
+ 
+-sa-update: sa-update.raw build_rules
++sa-update: sa-update.raw
+ 	$(PREPROCESS) $(FIXBYTES) $(FIXVARS) $(FIXBANG) -m$(PERM_RWX) -isa-update.raw -osa-update
+ 
+ sa-compile: sa-compile.raw
+
diff --git a/package/perl-mail-spamassassin/Config.in b/package/perl-mail-spamassassin/Config.in
new file mode 100644
index 0000000..4d1b0e0
--- /dev/null
+++ b/package/perl-mail-spamassassin/Config.in
@@ -0,0 +1,26 @@ 
+config BR2_PACKAGE_PERL_MAIL_SPAMASSASSIN
+	bool "perl-mail-spamassassin"
+	depends on !BR2_STATIC_LIBS
+	select BR2_PACKAGE_PERL_DIGEST_SHA1
+	select BR2_PACKAGE_PERL_HTML_PARSER
+	select BR2_PACKAGE_PERL_MAIL_DKIM
+	select BR2_PACKAGE_PERL_NET_DNS
+	select BR2_PACKAGE_PERL_NETADDR_IP
+	help
+	  SpamAssassin is an extensible email filter which is used to identify spam
+
+	  http://spamassassin.apache.com/
+
+comment "perl-mail-spamassassin needs a toolchain w/ dynamic library"
+	depends on BR2_STATIC_LIBS
+
+if BR2_PACKAGE_PERL_MAIL_SPAMASSASSIN
+
+config BR2_PACKAGE_PERL_MAIL_SPAMASSASSIN_CONTACT_ADDRESS
+	string "contact address"
+	default "the administrator of that BR system"
+	help
+	  What email address or URL should be used in the suspected-spam report
+	  text for users who want more information on your filter installation?
+
+endif
diff --git a/package/perl-mail-spamassassin/perl-mail-spamassassin.hash b/package/perl-mail-spamassassin/perl-mail-spamassassin.hash
new file mode 100644
index 0000000..7708008
--- /dev/null
+++ b/package/perl-mail-spamassassin/perl-mail-spamassassin.hash
@@ -0,0 +1,3 @@ 
+# retrieved by scancpan from http://cpan.metacpan.org/
+md5    76eca1f38c11635d319e62c26d5b034b Mail-SpamAssassin-3.4.1.tar.gz
+sha256 9b7a95a594cdca4f265707364478b57813b82a0ec7e520d9bc818bfbcafdd726 Mail-SpamAssassin-3.4.1.tar.gz
diff --git a/package/perl-mail-spamassassin/perl-mail-spamassassin.mk b/package/perl-mail-spamassassin/perl-mail-spamassassin.mk
new file mode 100644
index 0000000..0ad586b
--- /dev/null
+++ b/package/perl-mail-spamassassin/perl-mail-spamassassin.mk
@@ -0,0 +1,31 @@ 
+################################################################################
+#
+# perl-mail-spamassassin
+#
+################################################################################
+
+PERL_MAIL_SPAMASSASSIN_VERSION = 3.4.1
+PERL_MAIL_SPAMASSASSIN_SOURCE = Mail-SpamAssassin-$(PERL_MAIL_SPAMASSASSIN_VERSION).tar.gz
+PERL_MAIL_SPAMASSASSIN_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KM/KMCGRAIL/SpamAssassin
+PERL_MAIL_SPAMASSASSIN_DEPENDENCIES = perl-digest-sha1 perl-html-parser perl-mail-dkim perl-net-dns perl-netaddr-ip
+PERL_MAIL_SPAMASSASSIN_LICENSE = Apache-2.0
+
+ifeq ($(BR2_PACKAGE_PERL_ENCODE_DETECT),y)
+PERL_MAIL_SPAMASSASSIN_DEPENDENCIES += perl-encode-detect
+endif
+
+ifeq ($(BR2_PACKAGE_PERL_HTTP_DATE),y)
+PERL_MAIL_SPAMASSASSIN_DEPENDENCIES += perl-http-date
+endif
+
+ifeq ($(BR2_PACKAGE_PERL_IO_SOCKET_SSL),y)
+PERL_MAIL_SPAMASSASSIN_DEPENDENCIES += perl-io-socket-ssl
+endif
+
+ifeq ($(BR2_PACKAGE_PERL_LIBWWW_PERL),y)
+PERL_MAIL_SPAMASSASSIN_DEPENDENCIES += perl-libwww-perl
+endif
+
+PERL_MAIL_SPAMASSASSIN_CONF_OPTS += CONTACT_ADDRESS="$(call qstrip,$(BR2_PACKAGE_PERL_MAIL_SPAMASSASSIN_CONTACT_ADDRESS))"
+
+$(eval $(perl-package))