diff options
Diffstat (limited to 'pkgs/misc')
-rw-r--r-- | pkgs/misc/drivers/hplip/default.nix | 7 | ||||
-rw-r--r-- | pkgs/misc/drivers/hplip/image-processor.patch | 62 |
2 files changed, 69 insertions, 0 deletions
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix index 1726e8ea421..eced20902c6 100644 --- a/pkgs/misc/drivers/hplip/default.nix +++ b/pkgs/misc/drivers/hplip/default.nix @@ -82,6 +82,13 @@ pythonPackages.buildPythonApplication { makeWrapperArgs = [ "--prefix" "PATH" ":" "${nettools}/bin" ]; + patches = [ + # remove ImageProcessor usage, it causes segfaults, see + # https://bugs.launchpad.net/hplip/+bug/1788706 + # https://bugs.launchpad.net/hplip/+bug/1787289 + ./image-processor.patch + ]; + prePatch = '' # HPLIP hardcodes absolute paths everywhere. Nuke from orbit. find . -type f -exec sed -i \ diff --git a/pkgs/misc/drivers/hplip/image-processor.patch b/pkgs/misc/drivers/hplip/image-processor.patch new file mode 100644 index 00000000000..ef1040ba08b --- /dev/null +++ b/pkgs/misc/drivers/hplip/image-processor.patch @@ -0,0 +1,62 @@ +diff --git i/prnt/hpcups/HPCupsFilter.cpp w/prnt/hpcups/HPCupsFilter.cpp +index 5b282d8..153ee3a 100644 +--- i/prnt/hpcups/HPCupsFilter.cpp ++++ w/prnt/hpcups/HPCupsFilter.cpp +@@ -31,7 +31,6 @@ + \*****************************************************************************/ + + #include "HPCupsFilter.h" +-#include "ImageProcessor.h" + + #include <signal.h> + #include <sys/wait.h> +@@ -637,16 +636,10 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) + + + sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name); +- image_processor_t* imageProcessor = imageProcessorCreate(); + + while (cupsRasterReadHeader2(cups_raster, &cups_header)) + { + +- IMAGE_PROCESSOR_ERROR result = imageProcessorStartPage(imageProcessor, &cups_header); +- if (result != IPE_SUCCESS){ +- dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result); +- } +- + current_page_number++; + + if (current_page_number == 1) { +@@ -745,11 +738,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) + color_raster = rgbRaster; + black_raster = kRaster; + +- result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine); +- if (result != IPE_SUCCESS){ +- dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result); +- } +- + + if ((y == 0) && !is_ljmono) { + //For ljmono, make sure that first line is not a blankRaster line.Otherwise printer +@@ -780,11 +768,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) + } + } // for() loop end + +- result = imageProcessorEndPage(imageProcessor); +- if (result != IPE_SUCCESS){ +- dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result); +- } +- + + m_Job.NewPage(); + if (err != NO_ERROR) { +@@ -800,8 +783,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) + rgbRaster = NULL; + } + +- imageProcessorDestroy(imageProcessor); +- + unlink(hpPreProcessedRasterFile); + return ret_status; + } |