All of lore.kernel.org
 help / color / mirror / Atom feed
* [Printing-architecture] [PATCH] braille: Checking for tool presence
@ 2016-01-19 22:09 Samuel Thibault
  2016-01-19 22:49 ` Till Kamppeter
  0 siblings, 1 reply; 4+ messages in thread
From: Samuel Thibault @ 2016-01-19 22:09 UTC (permalink / raw)
  To: printing-architecture

[-- Attachment #1: Type: text/plain, Size: 192 bytes --]

Hello,

The attached patch makes the braille support check for tool presence, so
that cups nicely tells the user what is missing, allowing distributions
to relax package dependencies.

Samuel

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 4381 bytes --]

=== modified file 'filter/braille/filters/cups-braille.sh.in'
--- filter/braille/filters/cups-braille.sh.in	2015-12-21 13:51:08 +0000
+++ filter/braille/filters/cups-braille.sh.in	2016-01-19 21:51:03 +0000
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault@ens-lyon.org>
+# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault@ens-lyon.org>
 # 
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -228,3 +228,17 @@ echo "DEBUG: Table4 $LIBLOUIS4" >&2
 [ "$LIBLOUIS2" != None ] && LIBLOUIS_TABLES="${LIBLOUIS_TABLES:+$LIBLOUIS_TABLES,}$LIBLOUIS2"
 [ "$LIBLOUIS3" != None ] && LIBLOUIS_TABLES="${LIBLOUIS_TABLES:+$LIBLOUIS_TABLES,}$LIBLOUIS3"
 [ "$LIBLOUIS4" != None ] && LIBLOUIS_TABLES="${LIBLOUIS_TABLES:+$LIBLOUIS_TABLES,}$LIBLOUIS4"
+
+#
+# Checking for presence of tools
+#
+checkTool() {
+  TOOL=$1
+  PACKAGE=$2
+  USE=$3
+  if ! type $TOOL
+  then
+    printf "ERROR: The $PACKAGE package is required for $USE\n" >&2
+    exit 1
+  fi
+}

=== modified file 'filter/braille/filters/imagetobrf.in'
--- filter/braille/filters/imagetobrf.in	2015-12-21 13:54:30 +0000
+++ filter/braille/filters/imagetobrf.in	2016-01-19 22:01:01 +0000
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 #
-# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault@ens-lyon.org>
+# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault@ens-lyon.org>
 # 
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -42,6 +42,8 @@ esac
 
 . @CUPS_DATADIR@/braille/cups-braille.sh
 
+checkTool convert imagemagick "embossing images"
+
 NEGATE=$(getOption Negate)
 case "$NEGATE" in
   True)  NEGATE=-negate ;;

=== modified file 'filter/braille/filters/texttobrf.in'
--- filter/braille/filters/texttobrf.in	2015-12-21 13:51:08 +0000
+++ filter/braille/filters/texttobrf.in	2016-01-19 21:54:10 +0000
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 #
-# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault@ens-lyon.org>
+# Copyright (c) 2015-2016 Samuel Thibault <samuel.thibault@ens-lyon.org>
 # 
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -57,6 +57,8 @@ echo "DEBUG: Input content type: $CONTEN
 #  Selected braille table
 if [ -n "$LIBLOUIS_TABLES" ]
 then
+  checkTool file2brl liblouis "translating braille"
+
   #  Tool to be used for the conversion
   # FIXME CONTENT_TYPE contains original document, not document passed as parameter ?!!
   case $CONTENT_TYPE in
@@ -75,18 +77,22 @@ then
     application/msword)
       LIBLOUIS_TOOL="file2brl"
       CONVERT="antiword -x db /dev/stdin"
+      checkTool antiword antiword "translating MS-Word doc files"
       ;;
     application/vnd.openxmlformats-officedocument.wordprocessingml.document)
       LIBLOUIS_TOOL="file2brl"
       CONVERT="docx2txt"
+      checkTool docx2txt docx2txt "translating MS-Word docx files"
       ;;
     text/rtf|application/rtf)
       LIBLOUIS_TOOL="file2brl"
       CONVERT="rtf2xml /dev/stdin"
+      checkTool rtf2xml rtf2xml "translating RTF files"
       ;;
     application/pdf)
       LIBLOUIS_TOOL="file2brl -p"
       CONVERT="pdftotext -raw /dev/stdin /dev/stdout"
+      checkTool pdftotext poppler "translating PDF files"
       ;;
     *)
       echo "ERROR: unsupported content type $CONTENT_TYPE" >&2
@@ -107,18 +113,23 @@ else
     text/html)
       CONVERT=""
       RENDER_CALL="lynx -width=$TEXTWIDTH -dump -stdin"
+      checkTool lynx lynx "translating html files"
       ;;
     application/msword)
       CONVERT="antiword /dev/stdin"
+      checkTool antiword antiword "translating MS-Word doc files"
       ;;
     application/vnd.openxmlformats-officedocument.wordprocessingml.document)
       CONVERT="docx2txt"
+      checkTool docx2txt docx2txt "translating MS-Word docx files"
       ;;
     text/rtf|application/rtf)
       CONVERT="rtf2txt /dev/stdin"
+      checkTool rtf2txt rtf2txt "translating RTF files"
       ;;
     application/pdf)
       CONVERT="pdftotext -raw /dev/stdin /dev/stdout"
+      checkTool pdftotext poppler "translating PDF files"
       ;;
     *)
       echo "ERROR: unsupported content type $CONTENT_TYPE" >&2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Printing-architecture] [PATCH] braille: Checking for tool presence
  2016-01-19 22:09 [Printing-architecture] [PATCH] braille: Checking for tool presence Samuel Thibault
@ 2016-01-19 22:49 ` Till Kamppeter
  2016-01-20 23:28   ` Samuel Thibault
  0 siblings, 1 reply; 4+ messages in thread
From: Till Kamppeter @ 2016-01-19 22:49 UTC (permalink / raw)
  To: Samuel Thibault, printing-architecture

On 01/19/2016 08:09 PM, Samuel Thibault wrote:
> Hello,
>
> The attached patch makes the braille support check for tool presence, so
> that cups nicely tells the user what is missing, allowing distributions
> to relax package dependencies.
>
> Samuel

Thank you for the patch. I have applied it to the BZR repository now.

    Till



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Printing-architecture] [PATCH] braille: Checking for tool presence
  2016-01-19 22:49 ` Till Kamppeter
@ 2016-01-20 23:28   ` Samuel Thibault
  2016-01-21  1:17     ` Till Kamppeter
  0 siblings, 1 reply; 4+ messages in thread
From: Samuel Thibault @ 2016-01-20 23:28 UTC (permalink / raw)
  To: Till Kamppeter; +Cc: printing-architecture

[-- Attachment #1: Type: text/plain, Size: 166 bytes --]

The attached patch makes cups-filter able to use lou_translate from
liblouis-bin (and warn about that) when file2brl from liblouisutdml-bin
is not available.

Samuel

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 4419 bytes --]

=== modified file 'filter/braille/filters/texttobrf.in'
--- filter/braille/filters/texttobrf.in	2016-01-19 22:48:12 +0000
+++ filter/braille/filters/texttobrf.in	2016-01-20 23:25:50 +0000
@@ -54,58 +54,13 @@ fi
 
 echo "DEBUG: Input content type: $CONTENT_TYPE" >&2
 
-#  Selected braille table
-if [ -n "$LIBLOUIS_TABLES" ]
-then
-  checkTool file2brl liblouis "translating braille"
+# FIXME CONTENT_TYPE contains original document, not document passed as parameter ?!!
 
-  #  Tool to be used for the conversion
-  # FIXME CONTENT_TYPE contains original document, not document passed as parameter ?!!
-  case $CONTENT_TYPE in
-    text/plain)
-      LIBLOUIS_TOOL="file2brl"
-      CONVERT=""
-      ;;
-    text/html)
-      LIBLOUIS_TOOL="file2brl -t"
-      CONVERT=""
-      ;;
-    text/xml|application/xml|application/xhtml+xml)
-      LIBLOUIS_TOOL="file2brl"
-      CONVERT=""
-      ;;
-    application/msword)
-      LIBLOUIS_TOOL="file2brl"
-      CONVERT="antiword -x db /dev/stdin"
-      checkTool antiword antiword "translating MS-Word doc files"
-      ;;
-    application/vnd.openxmlformats-officedocument.wordprocessingml.document)
-      LIBLOUIS_TOOL="file2brl"
-      CONVERT="docx2txt"
-      checkTool docx2txt docx2txt "translating MS-Word docx files"
-      ;;
-    text/rtf|application/rtf)
-      LIBLOUIS_TOOL="file2brl"
-      CONVERT="rtf2xml /dev/stdin"
-      checkTool rtf2xml rtf2xml "translating RTF files"
-      ;;
-    application/pdf)
-      LIBLOUIS_TOOL="file2brl -p"
-      CONVERT="pdftotext -raw /dev/stdin /dev/stdout"
-      checkTool pdftotext poppler "translating PDF files"
-      ;;
-    *)
-      echo "ERROR: unsupported content type $CONTENT_TYPE" >&2
-      exit 1
-      ;;
-  esac
-  RENDER_CALL="$LIBLOUIS_TOOL -CliteraryTextTable=$LIBLOUIS_TABLES,braille-patterns.cti $LIBLOUIS_CONFIG"
-else
+setupTextRendering() {
   # Default rendering without translation: just reformat paragraphs
   RENDER_CALL="fmt -$TEXTWIDTH"
 
   #  Tool to be used for the conversion
-  # FIXME CONTENT_TYPE contains original document, not document passed as parameter ?!!
   case $CONTENT_TYPE in
     text/plain)
       CONVERT=""
@@ -136,6 +91,66 @@ else
       exit 1
       ;;
   esac
+}
+
+#  Selected braille table
+if [ -n "$LIBLOUIS_TABLES" ]
+then
+  if type file2brl
+  then
+    # Good, we can use liblouisutdml
+    case $CONTENT_TYPE in
+      text/plain)
+	LIBLOUIS_TOOL="file2brl"
+	CONVERT=""
+	;;
+      text/html)
+	LIBLOUIS_TOOL="file2brl -t"
+	CONVERT=""
+	;;
+      text/xml|application/xml|application/xhtml+xml)
+	LIBLOUIS_TOOL="file2brl"
+	CONVERT=""
+	;;
+      application/msword)
+	LIBLOUIS_TOOL="file2brl"
+	CONVERT="antiword -x db /dev/stdin"
+	checkTool antiword antiword "translating MS-Word doc files"
+	;;
+      application/vnd.openxmlformats-officedocument.wordprocessingml.document)
+	LIBLOUIS_TOOL="file2brl"
+	CONVERT="docx2txt"
+	checkTool docx2txt docx2txt "translating MS-Word docx files"
+	;;
+      text/rtf|application/rtf)
+	LIBLOUIS_TOOL="file2brl"
+	CONVERT="rtf2xml /dev/stdin"
+	checkTool rtf2xml rtf2xml "translating RTF files"
+	;;
+      application/pdf)
+	LIBLOUIS_TOOL="file2brl -p"
+	CONVERT="pdftotext -raw /dev/stdin /dev/stdout"
+	checkTool pdftotext poppler "translating PDF files"
+	;;
+      *)
+	echo "ERROR: unsupported content type $CONTENT_TYPE" >&2
+	exit 1
+	;;
+    esac
+    RENDER_CALL="$LIBLOUIS_TOOL -CliteraryTextTable=$LIBLOUIS_TABLES,braille-patterns.cti $LIBLOUIS_CONFIG"
+  elif type lou_translate
+  then
+    # Only liblouis, but better than nothing
+    setupTextRendering
+    printf "WARN: The liblouisutdml package is required for translating braille better\n" >&2
+    TRANSLATE="lou_translate $LIBLOUIS_TABLES,braille-patterns.cti"
+  else
+    printf "ERROR: The liblouisutdml package is required for translating braille\n" >&2
+    exit 1
+  fi
+else
+  # No translation, only text rendering
+  setupTextRendering
 fi
 
 # Now proceeed
@@ -147,9 +162,13 @@ if [ -z "$CONVERT" ]
 then
   printf "DEBUG: Calling $RENDER_CALL on '%s'\n" "$FILE" >&2
    < "$FILE" $RENDER_CALL
-else
+elif [ -z "$TRANSLATE" ]
+then
   printf "DEBUG: Calling $CONVERT | $RENDER_CALL on '%s'\n" "$FILE" >&2
   < "$FILE" $CONVERT | $RENDER_CALL
+else
+  printf "DEBUG: Calling $CONVERT | $RENDER_CALL | $TRANSLATE on '%s'\n" "$FILE" >&2
+  < "$FILE" $CONVERT | $RENDER_CALL | $TRANSLATE
 fi
 
 echo "INFO: Ready" >&2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Printing-architecture] [PATCH] braille: Checking for tool presence
  2016-01-20 23:28   ` Samuel Thibault
@ 2016-01-21  1:17     ` Till Kamppeter
  0 siblings, 0 replies; 4+ messages in thread
From: Till Kamppeter @ 2016-01-21  1:17 UTC (permalink / raw)
  To: Samuel Thibault, printing-architecture

On 01/20/2016 09:28 PM, Samuel Thibault wrote:
> The attached patch makes cups-filter able to use lou_translate from
> liblouis-bin (and warn about that) when file2brl from liblouisutdml-bin
> is not available.
>
> Samuel
>

Thank you very much. I have committed it now to the upstream BZR 
repository and so it will be part of cups-filters 1.8.0.

    Till


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-01-21  1:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-19 22:09 [Printing-architecture] [PATCH] braille: Checking for tool presence Samuel Thibault
2016-01-19 22:49 ` Till Kamppeter
2016-01-20 23:28   ` Samuel Thibault
2016-01-21  1:17     ` Till Kamppeter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.