gnu: Add bidiv.

* gnu/packages/fribidi.scm (bidiv): New variable.
* gnu/packages/patches/bidiv-update-fribidi.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
This commit is contained in:
Efraim Flashner 2020-03-04 20:59:48 +02:00
parent 90beb0ed45
commit b5ffcbe1af
No known key found for this signature in database
GPG Key ID: 41AAE7DCCA3D8351
3 changed files with 104 additions and 1 deletions

View File

@ -759,6 +759,7 @@ dist_patch_DATA = \
%D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/benchmark-unbundle-googletest.patch \
%D%/packages/patches/biber-fix-encoding-write.patch \
%D%/packages/patches/bidiv-update-fribidi.patch \
%D%/packages/patches/binutils-boot-2.20.1a.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
@ -54,3 +54,55 @@ or right-to-left ordering as necessary.")
(source
(origin (inherit (package-source fribidi))
(patches (search-patches "fribidi-CVE-2019-18397.patch"))))))
(define-public bidiv
(package
(name "bidiv")
(version "1.5")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://debian/pool/main/b/bidiv/bidiv_"
version ".orig.tar.gz"))
(sha256
(base32
"05p5m2ihxbmc1qsgs8rjlww08fy9859fhl7xf196p8g5qygqd7cv"))
(patches (search-patches "bidiv-update-fribidi.patch"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure
(add-after 'unpack 'misc-fixes
(lambda _
(substitute* "bidiv.c"
(("FriBidiCharType") "FriBidiParType")
(("&c") "(char *)&c"))
#t))
;; We don't want to use the handwritten makefile
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
(let ((fribidi (assoc-ref inputs "fribidi")))
(invoke "gcc" "-o" "bidiv" "bidiv.c"
;; pkg-config --cflags fribidi
(string-append "-I" fribidi "/include/fribidi")
;; pkg-config --libs fribidi
(string-append "-L" fribidi "/lib") "-lfribidi"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man1")))
(install-file "bidiv" bin)
(install-file "bidiv.1" man))
#t)))
#:tests? #f)) ; no tests
(inputs
`(("fribidi" ,fribidi)))
(home-page "https://tracker.debian.org/pkg/bidiv")
(synopsis "BiDi viewer - command-line tool displaying logical Hebrew/Arabic")
(description "bidiv is a simple utility for converting logical-Hebrew input
to visual-Hebrew output. This is useful for reading Hebrew mail messages,
viewing Hebrew texts, etc. It was written for Hebrew but Arabic (or other BiDi
languages) should work equally well.")
(license gpl2+)))

View File

@ -0,0 +1,50 @@
https://sources.debian.org/data/main/b/bidiv/1.5-6/debian/patches/fribidi_019
Description: Fix building with fribidi 1.9
Author: أحمد المحمودي <aelmahmoudy@users.sourceforge.net>
Bug-Debian: http://bugs.debian.org/568130
--- a/bidiv.c
+++ b/bidiv.c
@@ -141,8 +141,9 @@ bidiv(FILE *fp)
*/
if(c1<0x80||c1>0xbf){
ungetc(c1, fp);
- unicode_in[len]=
- fribidi_iso8859_8_to_unicode_c(c);
+ fribidi_charset_to_unicode(
+ FRIBIDI_CHAR_SET_ISO8859_8,
+ &c, 1, &unicode_in[len]);
} else
unicode_in[len]=((c & 037) << 6) + (c1 & 077);
newline=0;
@@ -153,8 +154,9 @@ bidiv(FILE *fp)
In the future we will have a language
option, which will control this (as well
as the output encoding). */
- unicode_in[len]=
- fribidi_iso8859_8_to_unicode_c(c);
+ fribidi_charset_to_unicode(
+ FRIBIDI_CHAR_SET_ISO8859_8,
+ &c, 1, &unicode_in[len]);
#else
in[len]=c;
#endif
@@ -206,11 +208,11 @@ bidiv(FILE *fp)
rtl_line=0;
if(out_utf8)
- fribidi_unicode_to_utf8(unicode_out, len,
- out);
+ fribidi_unicode_to_charset(FRIBIDI_CHAR_SET_UTF8,
+ unicode_out, len, out);
else
- fribidi_unicode_to_iso8859_8(unicode_out, len,
- out);
+ fribidi_unicode_to_charset(FRIBIDI_CHAR_SET_ISO8859_8,
+ unicode_out, len, out);
/* if rtl_line (i.e., base_dir is RL), and we didn't fill the
entire width, we need to pad with spaces. Maybe in the
future this should be an option.
--