Enhancement #647
openPatched softwares, how to handle them?
Added by Marc Dequènes over 6 years ago. Updated over 3 years ago.
10%
Description
- Jinta:
	
- /usr/lib/python3/dist-packages/wikitrans/wikimarkup.py: fix for dico
 
 - Orfeo:
	
- /usr/lib/ruby/vendor_ruby/mail/fields/content_type_field.rb: fix for cyborghood_postman
 - /var/lib/aspell/br.{compat,rws}: affected by Debian#690216
 - /usr/lib/python3/dist-packages/postorius/templates/postorius/lists/held_messages.html: fix for held messages popup not visible
 
 - Thorfinn:
	
- /var/lib/aspell/br.{compat,rws}: affected by Debian#690216
 
 - Toushirou:
	
- /usr/share/redmine/app/controllers/activities_controller.rb: missing API to get activities on the website
 - /usr/share/redmine/lib/redmine/themes.rb: per-project theme
 - /var/lib/aspell/br.{compat,rws}: affected by Debian#690216
 - /usr/share/redmine/app/helpers/application_helper.rb: #731
 - /usr/share/redmine/lib/plugins/gravatar/lib/gravatar.rb: #731
 
 
      
      Updated by Marc Dequènes over 6 years ago
      
      
    
    For wikitrans, here is the diff:
@@ -1025,7 +1025,7 @@
                 self.file = open(keywords[kw])
             elif kw == 'text':
                 if sys.version_info[0] > 2:
-                    self.text = keywords[kw].decode('utf-8').split("\n")
+                    self.text = keywords[kw].split("\n")
                 else:
                     self.text = keywords[kw].split("\n")
             elif kw == 'lang':
	Without it we get this trace:
May 08 20:10:45 Jinta dicod[25119]: Error: Traceback (most recent call last):
May 08 20:10:45 Jinta dicod[25119]: Error:   File "/usr/share/dico/python/mediawiki.py", line 98, in define_word
May 08 20:10:45 Jinta dicod[25119]: Error:     wikiparser = TextWiktionaryMarkup (text=data)
May 08 20:10:45 Jinta dicod[25119]: Error:   File "/usr/lib/python3/dist-packages/wikitrans/wiki2text.py", line 278, in __init__
May 08 20:10:45 Jinta dicod[25119]: Error:     super(TextWikiMarkup, self).__init__(*args, **keywords)
May 08 20:10:45 Jinta dicod[25119]: Error:   File "/usr/lib/python3/dist-packages/wikitrans/wikimarkup.py", line 1028, in __init__
May 08 20:10:45 Jinta dicod[25119]: Error:     self.text = keywords[kw].decode('utf-8').split("\n")
May 08 20:10:45 Jinta dicod[25119]: Error: AttributeError: 'str' object has no attribute 'decode'
	It seems the decoding already happens before.
Interestingly if I use the wikitrans program with a WP URL the original code works but the fix breaks with:
# wikitrans   https://en.wikipedia.org/wiki/Special:Export/Coin
Traceback (most recent call last):
  File "/usr/bin/wikitrans", line 186, in <module>
    main()
  File "/usr/bin/wikitrans", line 175, in main
    markup = handlers[options.otype][options.itype](**options.kwdict)
  File "/usr/lib/python3/dist-packages/wikitrans/wiki2html.py", line 241, in __init__
    super(HtmlWikiMarkup, self).__init__(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/wikitrans/wikimarkup.py", line 1029, in __init__
    self.text = keywords[kw].split("\n")
TypeError: a bytes-like object is required, not 'str'
	I looked into the dicod mediawiki plugin and stumbled onto my own patch for Python 3 :-).
I made this patch witch works with the original wikitrans code:
--- /usr/share/dico/python/mediawiki.py.orig    2019-05-08 20:45:22.746677470 +0200
+++ /usr/share/dico/python/mediawiki.py    2019-05-08 20:45:11.702138585 +0200
@@ -93,8 +93,7 @@
             data = el[0].firstChild.data
             if dico.current_markup () != 'wiki':
                 data = self.__htmlentitydecode (data)
-                if sys.version_info[0] == 2:
-                    data = data.encode ('utf-8')
+                data = data.encode ('utf-8')
                 wikiparser = TextWiktionaryMarkup (text=data)
                 wikiparser.parse ()
                 data = str (wikiparser)
	So I believe either wikitrans should be more flexible, or this patch should be applied in dicod.
      
      Updated by Marc Dequènes over 6 years ago
      
      
    
    As for ruby-mail, here is the diff:
@@ -183,10 +183,8 @@
         params = params.map { |i| i.split(/\s*\=\s*/) }
         params = params.map { |i| "#{i[0]}=#{dquote(i[1].to_s.gsub(/;$/,""))}" }.join('; ')
         "#{type}; #{params}" 
-      when val =~ /^\s*$/
-        'text/plain'
       else
-        ''
+        'text/plain; charset=us-ascii'
       end
     end
@@ -195,7 +193,7 @@
       when val =~ /^([\w\-]+)\/([\w\-]+);.+$/i
         "#{$1}/#{$2}" 
       else
-        'text/plain'
+        'text/plain; charset=us-ascii'
       end
     end
   end
	The version in Buster has slightly changed but the logic is equally broken and the patch is still needed.
      
      Updated by Marc Dequènes over 6 years ago
      
      
    
    - Status changed from New to In Progress
 - Assignee set to Marc Dequènes
 - % Done changed from 0 to 10
 
As for Redmine changes, the patches are lost in Toushirou-OLD and we're trying to get them back. The changes also included a new file IIRC, as well as the Bip project theme.
Upstream did not make any progress on the topic so we'll have to port this work to the new version in Buster (see http://www.redmine.org/issues/2778).
      
      Updated by Marc Dequènes over 6 years ago
      
      
    
    - Blocked by Enhancement #648: Debian Buster Migration added
 
      
      Updated by Marc Dequènes over 6 years ago
      
      
    
    - Blocked by deleted (Enhancement #648: Debian Buster Migration)
 
      
      Updated by Marc Dequènes over 6 years ago
      
      
    
    - Blocks Enhancement #648: Debian Buster Migration added
 
      
      Updated by Marc Dequènes about 6 years ago
      
      
    
    ruby-mail is blocked at 2.6.4 to avoid breaking Banya (which is probably broken anyway). I need to evaluate 2.7.1 if we decide to keep it.
      
      Updated by Marc Dequènes about 6 years ago
      
      
    
    - Blocks deleted (Enhancement #648: Debian Buster Migration)
 
      
      Updated by Marc Dequènes about 6 years ago
      
      
    
    The patch for redmine activities (thanks Pilou, see #655):
--- /dev/null   2015-12-14 19:43:03.976709288 +0100
+++ app/views/activities/index.api.rsb  2016-07-07 11:36:32.000000000 +0200
@@ -0,0 +1,13 @@
+api.array :activities do
+  @events.uniq.each do |event|
+    api.activity do
+      api.id          "#{event.class.name}/#{event.id}" 
+      api.title       event.event_title
+      api.type        event.event_type
+      api.project(:id => event.project.id, :name => event.project.name) unless event.project.nil?
+      api.description event.event_description
+      api.url         url_for(event.event_url)
+      api.created_on  event.event_datetime
+    end
+  end
+end
--- ./app/controllers/activities_controller.rb.orig     2016-10-10 09:48:13.000000000 +0200
+++ ./app/controllers/activities_controller.rb  2017-07-19 20:22:19.000000000 +0200
@@ -54,6 +54,7 @@
     end
     events = @activity.events(@date_from, @date_to)
+    @events = events # for API
     if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, events.size, User.current, current_language])
       respond_to do |format|
@@ -61,6 +62,7 @@
           @events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)}
           render :layout => false if request.xhr?
         }
+        format.api
         format.atom {
           title = l(:label_activity)
           if @author
	I found another patch repo_controller.patch but it's obsolete and the corresponding files were not found modified before switchign to Buster so this confirms it is no longer needed.
      
      Updated by Marc Dequènes over 5 years ago
      
      
    
    The wikitrans patch caused this error:
Apr 22 13:11:41 Jinta dicod[14411]: Info: Client info: "GNU Dico (Python Edition) 1.1" 
Apr 22 13:11:41 Jinta dicod[14411]: Error: Traceback (most recent call last):
Apr 22 13:11:41 Jinta dicod[14411]: Error:   File "/usr/share/dico/python/mediawiki.py", line 97, in define_word
Apr 22 13:11:41 Jinta dicod[14411]: Error:     wikiparser = TextWiktionaryMarkup (text=data)
Apr 22 13:11:41 Jinta dicod[14411]: Error:   File "/usr/lib/python3/dist-packages/wikitrans/wiki2text.py", line 278, in __init__
Apr 22 13:11:41 Jinta dicod[14411]: Error:     super(TextWikiMarkup, self).__init__(*args, **keywords)
Apr 22 13:11:41 Jinta dicod[14411]: Error:   File "/usr/lib/python3/dist-packages/wikitrans/wikimarkup.py", line 1028, in __init__
Apr 22 13:11:41 Jinta dicod[14411]: Error:     self.text = keywords[kw].decode('utf-8').split("\n")
Apr 22 13:11:41 Jinta dicod[14411]: Error: AttributeError: 'str' object has no attribute 'decode'
Apr 22 13:11:41 Jinta dicod[14375]: Debug: 14411 exited successfully
	I unapplied it and it's works so far. I cannot even reproduce the problems that made me add it. Also from a Python 3 point of view I think this does not make sense to use decode().
I'll be monitoring the situation.
      
      Updated by Pierre-Louis Bonicoli over 3 years ago
      
      
    
    I updated the debsum-ignore in order to use regexes (ea6aa17724f60fddb2d3537b948a412f02bb1198).