package/htop: open files using binary mode
authorRomain Naour <romain.naour@gmail.com>
Sun, 18 Mar 2018 21:26:44 +0000 (22:26 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Mon, 19 Mar 2018 12:22:49 +0000 (13:22 +0100)
Imlement Arnout's suggestion [1] for MakeHeader script.

[1] http://lists.busybox.net/pipermail/buildroot/2018-February/214373.html

Fixes:
http://autobuild.buildroot.net/results/9ce/9ce2ef5ef694253b9759016c9702c5c6be7849a1

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/htop/0002-MakeHeader-open-files-using-binary-mode.patch [new file with mode: 0644]

diff --git a/package/htop/0002-MakeHeader-open-files-using-binary-mode.patch b/package/htop/0002-MakeHeader-open-files-using-binary-mode.patch
new file mode 100644 (file)
index 0000000..bcc3e65
--- /dev/null
@@ -0,0 +1,50 @@
+From 1a83a3e6ae0841a0dc4c7eb08a1a71930e99666c Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sun, 18 Mar 2018 21:57:54 +0100
+Subject: [PATCH] MakeHeader: open files using binary mode
+
+By default, open(sys.argv[1]) use Unicode mode.
+The readlines() will try to convert with the default codec
+(which depends on the i18n settings, so 'ascii' under
+LC_ALL=C)
+
+Open files using binary mode so no conversion will be done
+by readlines(). But then, normal strings can't be used in
+the rest of the code; either all strings have to be prefixed
+with b'' or (simpler) the read line has to be converted to
+a unicode string by calling decode() on it.
+
+http://lists.busybox.net/pipermail/buildroot/2018-February/214373.html
+
+Fixes:
+http://autobuild.buildroot.net/results/9ce/9ce2ef5ef694253b9759016c9702c5c6be7849a1
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ scripts/MakeHeader.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py
+index 4841bda..dd0798c 100755
+--- a/scripts/MakeHeader.py
++++ b/scripts/MakeHeader.py
+@@ -16,7 +16,7 @@ SKIPONE=4
+ state = ANY
+ static = 0
+-file = open(sys.argv[1])
++file = open(sys.argv[1], 'rb')
+ name = sys.argv[1][:-2]
+ out = StringIO()
+@@ -31,6 +31,7 @@ out.write( "#define HEADER_" + os.path.basename(name) + "\n")
+ is_blank = False
+ for line in file.readlines():
+    line = line[:-1]
++   line = line.decode('utf-8')
+    if state == ANY:
+       if line == '/*{':
+          state = COPY
+-- 
+2.14.3
+