Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Oct 2013 00:22:40 +0900 (JST)
From:      Yasuhiro KIMURA <yasu@utahime.org>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/183204: [PATCH] mail/bsfilter: update to 1.0.18.rc5 and etc.
Message-ID:  <20131022152240.4A9801C376F@rolling-vm-freebsd1.home.utahime.org>
Resent-Message-ID: <201310221540.r9MFe0a0025101@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         183204
>Category:       ports
>Synopsis:       [PATCH] mail/bsfilter: update to 1.0.18.rc5 and etc.
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Oct 22 15:40:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Yasuhiro KIMURA
>Release:        FreeBSD 9.2-RELEASE amd64
>Organization:
>Environment:
System: FreeBSD xxxx 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255921: Sat Sep 28 23:09:21 JST 2013 xxxx amd64


	
>Description:
	
	- Update to 1.0.18.rc5 (+ patch) to support Ruby 1.9.
	- Use more proper EXAMPLES option instead of DOCS.
	- Support staging.

>How-To-Repeat:
	
>Fix:

	

--- patch-bsfilter begins here ---
Index: Makefile
===================================================================
--- Makefile	(revision 331260)
+++ Makefile	(working copy)
@@ -2,10 +2,11 @@
 # $FreeBSD$
 
 PORTNAME=	bsfilter
-PORTVERSION=	1.0.17
+PORTVERSION=	1.0.18.r5
 CATEGORIES=	mail ruby
 MASTER_SITES=	SFJP
-MASTER_SITE_SUBDIR=	bsfilter/49795
+MASTER_SITE_SUBDIR=	bsfilter/58302
+DISTNAME=	${PORTNAME}-1.0.18.ruby1.9.rc5
 EXTRACT_SUFX=	.tgz
 
 MAINTAINER=	info@otsune.com
@@ -17,12 +18,12 @@
 
 NO_BUILD=	yes
 USE_RUBY=	yes
+RUBY_REQUIRE=	Ruby >= 193
 
-OPTIONS_DEFINE=	DOCS MECAB
+OPTIONS_DEFINE=	EXAMPLES MECAB
 
 MECAB_DESC=	Part-of-Speech and Morphological Analyzer
 
-NO_STAGE=	yes
 .include <bsd.port.options.mk>
 
 .if ${PORT_OPTIONS:MMECAB}
@@ -30,18 +31,13 @@
 .endif
 
 do-install:
-	@${INSTALL_SCRIPT} ${WRKSRC}/bsfilter/${PORTNAME} ${PREFIX}/bin/${PORTNAME}
-.if ${PORT_OPTIONS:MDOCS}
-	@${MKDIR} ${EXAMPLESDIR}
+	@${INSTALL_SCRIPT} ${WRKSRC}/bsfilter/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
 .for FILE in bsfilter.conf.sample dot-qmail.sample
-	@${INSTALL_DATA} ${FILESDIR}/${FILE} ${EXAMPLESDIR}
+	@${INSTALL_DATA} ${FILESDIR}/${FILE} ${STAGEDIR}${EXAMPLESDIR}
 .endfor
 .for DIR in mda mua
-	@${CP} -r ${WRKSRC}/${DIR} ${EXAMPLESDIR}/${DIR}
+	@${CP} -r ${WRKSRC}/${DIR} ${STAGEDIR}${EXAMPLESDIR}/${DIR}
 .endfor
-.endif
 
-post-install:
-	@${CAT} ${PKGMESSAGE}
-
 .include <bsd.port.mk>
Index: distinfo
===================================================================
--- distinfo	(revision 331260)
+++ distinfo	(working copy)
@@ -1,2 +1,2 @@
-SHA256 (bsfilter-1.0.17.tgz) = 80aff0cc641894d9292be3c76d5ff7b074382a89057bdf4d42cd79eb459245c7
-SIZE (bsfilter-1.0.17.tgz) = 1348493
+SHA256 (bsfilter-1.0.18.ruby1.9.rc5.tgz) = bcd3504f425d1290668b4eb451e5efc683828239348ef5ced42799598b60506f
+SIZE (bsfilter-1.0.18.ruby1.9.rc5.tgz) = 80184
Index: files/patch-bsfilter
===================================================================
--- files/patch-bsfilter	(revision 0)
+++ files/patch-bsfilter	(working copy)
@@ -0,0 +1,192 @@
+Index: bsfilter/bsfilter
+===================================================================
+RCS file: /cvsroot/bsfilter/bsfilter/bsfilter,v
+retrieving revision 1.86.2.8
+retrieving revision 1.86.2.10
+diff -u -r1.86.2.8 -r1.86.2.10
+--- bsfilter/bsfilter	9 Mar 2013 18:03:03 -0000	1.86.2.8
++++ bsfilter/bsfilter	14 Jul 2013 18:41:40 -0000	1.86.2.10
+@@ -1,5 +1,5 @@
+ #! /usr/bin/env ruby
+-## -*-Ruby-*- $Id: bsfilter,v 1.86.2.8 2013/03/09 18:03:03 nabeken Exp $
++## -*-Ruby-*- $Id: bsfilter,v 1.86.2.10 2013/07/14 18:41:40 nabeken Exp $
+ ## Copyright (C) 2003, 2004, 2005, 2006 NABEYA Kenichi
+ ##
+ ## This program is free software; you can redistribute it and/or modify
+@@ -31,7 +31,7 @@
+ 
+   Release = "$Name:  $".split[1].sub(/\A[^\d]*/, '').gsub(/_/, '.')
+   Release.concat("-") if (Release == "")
+-  Revision = "$Revision: 1.86.2.8 $".gsub(/[^\.\d]/, '')
++  Revision = "$Revision: 1.86.2.10 $".gsub(/[^\.\d]/, '')
+   Languages = ["C", "ja"]
+   Default_Language = "C"
+ 
+@@ -281,9 +281,9 @@
+ 
+   def latin2ascii(str)
+     str.force_encoding('ASCII-8BIT')
+-    newstr = str.tr("\x92\x93\x94", "'''")
+-    newstr.tr!("\xc0-\xc5\xc8-\xcb\xcc-\xcf\xd2-\xd6\xd9-\xdc", "AAAAAAEEEEIIIIOOOOOUUUU")
+-    newstr.tr!("\xe0-\xe5\xe8-\xeb\xec-\xef\xf2-\xf6\xf9-\xfc", "aaaaaaeeeeiiiiooooouuuu")
++    newstr = str.tr("\x92\x93\x94".force_encoding('ASCII-8BIT'), "'''")
++    newstr.tr!("\xc0-\xc5\xc8-\xcb\xcc-\xcf\xd2-\xd6\xd9-\xdc".force_encoding('ASCII-8BIT'), "AAAAAAEEEEIIIIOOOOOUUUU")
++    newstr.tr!("\xe0-\xe5\xe8-\xeb\xec-\xef\xf2-\xf6\xf9-\xfc".force_encoding('ASCII-8BIT'), "aaaaaaeeeeiiiiooooouuuu")
+     return newstr
+   end
+ 
+@@ -901,7 +901,7 @@
+         end
+       end
+     end
+-    return nil
++    return [nil, nil]
+   end
+ 
+   def get_lang_from_buf(buf, html_flag)
+@@ -916,6 +916,7 @@
+                    
+ ##    reg_utf8 = Regexp::compile("[\xe3\x80\x80-\xe3\x80\x82\xe3\x81\x81-\xe3\x82\x93\xe3\x82\xa1-\xe3\x83\xb6]{4}", nil, 'u') # kana in utf8
+     reg_utf8 = Regexp::compile("[\xe3\x80\x80-\xe3\x80\x82\xe3\x81\x81-\xe3\x82\x93\xe3\x82\xa1-\xe3\x83\xb6]{4}".force_encoding('UTF-8'))
++
+ ##    reg_jis = Regexp::compile("\\x1b\\x24[\\x42\\x40]", nil, 'n') # escape sequence to jisx0208 new and old
+     reg_jis = Regexp::compile("\\x1b\\x24[\\x42\\x40]".force_encoding('ASCII-8BIT'))
+ ##    reg_gb18030_possible = Regexp::compile('[\x80-\x9f]', nil, 'n')
+@@ -934,16 +935,20 @@
+         gb18030_possible = true
+       end
+ 
+-      if (str.encode('UTF-8', 'UTF-8') =~ reg_utf8)
++      str_utf8 = str.encode('UTF-16BE', 'UTF-8', :undef => :replace, :invalid => :replace).encode('UTF-8', 'UTF-16BE', :undef => :replace, :invalid => :replace)
++      str_sjis = str.encode('UTF-16BE', 'SHIFT_JIS', :undef => :replace, :invalid => :replace).encode('SHIFT_JIS', 'UTF-16BE', :undef => :replace, :invalid => :replace)
++      str_euc = str.encode('UTF-16BE', 'EUC-JP', :undef => :replace, :invalid => :replace).encode('EUC-JP', 'UTF-16BE', :undef => :replace, :invalid => :replace)
++
++      if (str_utf8 =~ reg_utf8)
+         @options["message-fh"].printf("lang ja utf8\n") if (@options["debug"])
+         return ["ja", "utf8"]
+       elsif (str.force_encoding('ASCII-8BIT') =~ reg_jis)
+         @options["message-fh"].printf("lang ja jis\n") if (@options["debug"])
+         return ["ja", "jis"]
+-      elsif (str.encode('SHIFT_JIS', 'SHIFT_JIS') =~ reg_sjis)
++      elsif (str_sjis =~ reg_sjis)
+         @options["message-fh"].printf("lang ja sjis\n") if (@options["debug"])
+         return ["ja", "sjis"]
+-      elsif (str.encode('EUC-JP', 'EUC-JP') =~ reg_euc)
++      elsif (str_euc =~ reg_euc)
+         if (gb18030_possible)
+           @options["message-fh"].printf("lang ja gb18030\n") if (@options["debug"])
+           return ["ja", "gb18030"]
+@@ -1041,10 +1046,27 @@
+         @method = Proc::new {|s| block(s)}
+       when "mecab"
+         @method = Proc::new {|s| mecab(s)}
++        meishi_euc = "\xcc\xbe\xbb\xec".force_encoding('ASCII-8BIT')
++        meishi_sjis = meishi_euc.encode('SHIFT_JIS', 'EUC-JP').force_encoding('ASCII-8BIT')
++        meishi_utf8 = meishi_euc.encode('UTF-8', 'EUC-JP').force_encoding('ASCII-8BIT')
+         if (defined?(MeCab::VERSION)) # defined after 0.90
+           @m = MeCab::Tagger.new("-Ochasen")
++          node = @m.parseToNode('this is a pen')
++          hinshi = node.next.feature.force_encoding('ASCII-8BIT').split(/,/)[0]
+         else
+-          @m = MeCab::Tagger.new([$0, "-Ochasen"])
++          @m = MeCab::Tagger.new("-Ochasen")
++          node = @m.parseToNode('this is a pen')
++          hinshi = node.next.getFeature.force_encoding('ASCII-8BIT').split(/,/)[0]
++        end
++        case hinshi
++        when meishi_euc
++          @m_dic_enc = Encoding::EUC_JP
++        when meishi_sjis
++          @m_dic_enc = Encoding::SHIFT_JIS
++        when meishi_utf8
++          @m_dic_enc = Encoding::UTF_8
++        else
++          @m_dic_enc = Encoding::default_external
+         end
+       when "chasen"
+         Chasen.getopt("-F", '%H %m\n', "-j")
+@@ -1089,8 +1111,9 @@
+     end
+     
+     def mecab(str)
++      str = str.encode(@m_dic_enc, :invalid => :replace, :undef => :replace, :replace => ' ')
+       str = str.gsub(/[\x00-\x7f]/, ' ')
+-      if (str =~ /\A +\z/)
++      if (str.length == 0 || str =~ /\A +\z/)
+         return []
+       end
+       array = Array::new
+@@ -1098,21 +1121,30 @@
+       while (node &&
+              (defined?(MeCab::VERSION) || (node.hasNode == 1)))
+         if defined?(MeCab::VERSION)
+-          token = node.surface.force_encoding('EUC-JP')
+-          hinshi = node.feature.force_encoding('EUC-JP').split(/,/)[0]
++          token = node.surface.encode('EUC-JP', @m_dic_enc)
++          hinshi = node.feature.encode('EUC-JP', @m_dic_enc).split(/,/)[0]
+         else
+-          token = node.getSurface
+-          hinshi = node.getFeature.split(/,/)[0]
++          token = node.getSurface.encode('EUC-JP', @m_dic_enc)
++          hinshi = node.getFeature.encode('EUC-JP', @m_dic_enc).split(/,/)[0]
+         end
+-        if (hinshi == "\xcc\xbe\xbb\xec".force_encoding('EUC-JP'))
+-          if ((token.force_encoding('EUC-JP') =~ Reg_kanji_katakana) || (token.length > 2))
++        unless (token.valid_encoding?)
++  # Scrub token
++          token = token.each_char.map { |c| (c.valid_encoding?) ? c : "" }.join
++        end
++        case hinshi
++        when "BOS/EOS"
++          # Skip BOS/EOS
++        when "\xb5\xad\xb9\xe6".force_encoding('EUC-JP')
++          # Skip KIGOU
++        when "\xcc\xbe\xbb\xec".force_encoding('EUC-JP')
++          # MEISHI
++          if ((token =~ Reg_kanji_katakana) || (token.bytesize > 2))
+             array.push(token)
+           end
+         else
+-          token.force_encoding('EUC-JP').gsub!(Reg_not_kanji_katakana, '')
+-          if ((token.force_encoding('EUC-JP') =~ Reg_kanji) || (token.length > 2))
++          token.gsub!(Reg_not_kanji_katakana, '')
++          if ((token =~ Reg_kanji) || (token.bytesize > 2))
+             array.push(token)
+-          else
+           end
+         end
+         node = node.next
+@@ -1215,6 +1247,12 @@
+         else
+           content = latin2ascii(content)
+         end
++
++        unless (content.valid_encoding?)
++      # Scrub str
++          content = content.each_char.map { |c| (c.valid_encoding?) ? c : "" }.join
++        end
++
+         content.scan(reg_token).each do |token|
+           head_db.add_scalar(header, token, 1) if (token.length < 20)
+           @options["message-fh"].printf("tokenizer %s %s\n", header, token) if (@options["debug"])
+@@ -1362,6 +1400,11 @@
+     reg_token2 = Regexp::compile('\b\d[\d\.]+\d\b|[\w%]+')
+     reg_noret = Regexp::compile('[\r\n]*\z')
+     
++    unless (str.valid_encoding?)
++      # Scrub str
++      str = str.each_char.map { |c| (c.valid_encoding?) ? c : "" }.join
++    end
++
+     str.scan(reg_token).each do |token|
+       if (token =~ reg_url)
+         token.scan(reg_token2).each do |token2|
+@@ -1454,7 +1497,7 @@
+         buf = buf.join.gsub(/[\r\n]/, '').unpack("m*")
+       end
+     when /quoted-printable/i
+-      buf.map! {|str| str.unpack("M*").to_s}
++      buf.map! {|str| str.unpack("M*").join}
+     end
+ 
+     lang_backup = lang
Index: pkg-plist
===================================================================
--- pkg-plist	(revision 331260)
+++ pkg-plist	(working copy)
@@ -1,24 +1,26 @@
 bin/bsfilter
-%%PORTDOCS%%share/examples/bsfilter/bsfilter.conf.sample
-%%PORTDOCS%%share/examples/bsfilter/dot-qmail.sample
-%%PORTDOCS%%share/examples/bsfilter/mda/maildrop/mailfilter.header
-%%PORTDOCS%%share/examples/bsfilter/mda/procmail/procmailrc.black_gray
-%%PORTDOCS%%share/examples/bsfilter/mda/procmail/procmailrc.header
-%%PORTDOCS%%share/examples/bsfilter/mda/procmail/procmailrc.status
-%%PORTDOCS%%share/examples/bsfilter/mua/mew3/bs_clean
-%%PORTDOCS%%share/examples/bsfilter/mua/mew3/bs_mark
-%%PORTDOCS%%share/examples/bsfilter/mua/mew3/bs_spam
-%%PORTDOCS%%share/examples/bsfilter/mua/mew3/mew.el
-%%PORTDOCS%%share/examples/bsfilter/mua/mew4/emacs.el
-%%PORTDOCS%%share/examples/bsfilter/mua/mew4/mew.el
-%%PORTDOCS%%share/examples/bsfilter/mua/mew5/mew.el
-%%PORTDOCS%%share/examples/bsfilter/mua/mew6/mew.el
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mda/maildrop
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mda/procmail
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mda
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mua/mew6
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mua/mew5
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mua/mew4
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mua/mew3
-%%PORTDOCS%%@dirrm share/examples/bsfilter/mua
-%%PORTDOCS%%@dirrm share/examples/bsfilter
+%%PORTEXAMPLES%%share/examples/bsfilter/bsfilter.conf.sample
+%%PORTEXAMPLES%%share/examples/bsfilter/dot-qmail.sample
+%%PORTEXAMPLES%%share/examples/bsfilter/mda/maildrop/mailfilter.header
+%%PORTEXAMPLES%%share/examples/bsfilter/mda/procmail/procmailrc.black_gray
+%%PORTEXAMPLES%%share/examples/bsfilter/mda/procmail/procmailrc.header
+%%PORTEXAMPLES%%share/examples/bsfilter/mda/procmail/procmailrc.status
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew3/bs_clean
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew3/bs_mark
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew3/bs_spam
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew3/mew.el
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew4/emacs.el
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew4/mew.el
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew5/mew.el
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew6/mew.el
+%%PORTEXAMPLES%%share/examples/bsfilter/mua/mew6.4/mew.el
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mda/maildrop
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mda/procmail
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mda
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mua/mew6.4
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mua/mew6
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mua/mew5
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mua/mew4
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mua/mew3
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter/mua
+%%PORTEXAMPLES%%@dirrm share/examples/bsfilter
--- patch-bsfilter ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131022152240.4A9801C376F>