Bug#729651: guymager: FTBFS

Thorsten Glaser tg at mirbsd.de
Wed Dec 25 00:22:48 UTC 2013


tags 729651 + patch
thanks

Hi Mika,

as discussed, here’s a debdiff to fix the FTBFS by porting to
the new libewf API as much as is currently needed and adding
those new formats – also fixed the inability to dpkg-buildpackage
twice in a row, as per Debian Policy.

Caveat: I could not test this, especially not with the new formats.
It starts, as non-root, and tells me it cannot do anything; when
starting with sudo I don’t get a usable UI (over VNC, lots of X11
bad drawing errors, might have to do with x.org vs. XFree86® diffs),
so I’d appreciate if you can test that this, at least, does not
introduce any regressions.

bye,
//mirabilos
-- 
16:47⎜«mika:#grml» .oO(mira ist einfach gut....)      23:22⎜«mikap:#grml»
mirabilos: und dein bootloader ist geil :)    23:29⎜«mikap:#grml» und ich
finds saugeil dass ich ein bsd zum booten mit grml hab, das muss ich dann
gleich mal auf usb-stick installieren	-- Michael Prokop über MirOS bsd4grml
-------------- next part --------------
diff -Nru guymager-0.6.7/debian/changelog guymager-0.6.7/debian/changelog
--- guymager-0.6.7/debian/changelog	2012-06-07 17:37:15.000000000 +0200
+++ guymager-0.6.7/debian/changelog	2013-12-25 01:12:06.000000000 +0100
@@ -1,3 +1,14 @@
+guymager (0.6.7-3.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Add new libewf formats: Encase7, Linen6, Linen7, LVF6, LVF7
+    (XXX these need testing!)
+  * Fix clean not removing local patch to threadscan.cpp
+  * Same for generated guymager_cn.qm compileinfo.cpp manuals/guymager.1
+  * Port to newer libewf API to fix FTBFS (Closes: #729651)
+
+ -- Thorsten Glaser <tg at mirbsd.de>  Wed, 25 Dec 2013 00:09:42 +0000
+
 guymager (0.6.7-3) unstable; urgency=low
 
   * [136b5d8] Adjust ThreadScanLibPartedSearchDirs of threadscan.cpp
diff -Nru guymager-0.6.7/debian/patches/newer_libewf.diff guymager-0.6.7/debian/patches/newer_libewf.diff
--- guymager-0.6.7/debian/patches/newer_libewf.diff	1970-01-01 01:00:00.000000000 +0100
+++ guymager-0.6.7/debian/patches/newer_libewf.diff	2013-12-25 01:08:33.000000000 +0100
@@ -0,0 +1,295 @@
+# DP: Address FTBFS in #729651 by porting to newer libewf API.
+# DP: Also adds the new file formats Encase7, Linen7, LVF6, LVF7
+# DP: and the previously-forgotten Linen6 (neither of these have
+# DP: been tested yet).
+
+--- a/config.cpp
++++ b/config.cpp
+@@ -235,11 +235,15 @@ static t_ToolCfgSet SetArrEwfFormat[] =
+    {  "Encase4" ,         LIBEWF_FORMAT_ENCASE4},
+    {  "Encase5" ,         LIBEWF_FORMAT_ENCASE5},
+    {  "Encase6" ,         LIBEWF_FORMAT_ENCASE6},
++   {  "Encase7" ,         LIBEWF_FORMAT_ENCASE7},
+    {  "Smart"   ,         LIBEWF_FORMAT_SMART  },
+-   {  "FTK"     ,         LIBEWF_FORMAT_FTK    },
++   {  "FTK"     ,         LIBEWF_FORMAT_FTK_IMAGER    },
+    {  "Linen5"  ,         LIBEWF_FORMAT_LINEN5 },
+    {  "Linen6"  ,         LIBEWF_FORMAT_LINEN6 },
+-   {  "LVF"     ,         LIBEWF_FORMAT_LVF    },
++   {  "Linen7"  ,         LIBEWF_FORMAT_LINEN7 },
++   {  "LVF"     ,         LIBEWF_FORMAT_LOGICAL_ENCASE5    },
++   {  "LVF6"    ,         LIBEWF_FORMAT_LOGICAL_ENCASE6    },
++   {  "LVF7"    ,         LIBEWF_FORMAT_LOGICAL_ENCASE7    },
+    {  "Guymager",         t_File::AEWF         }, // AEWF format is a format on its own (for the function calls) and at the same time a
+    {  "AEWF"    ,         t_File::AEWF         }, // subformat of EWF (for the user interface). Looks a bit strange at first sight, but
+    {   NULL     ,         0                    }  // probably is the best compromise.
+--- a/file.cpp
++++ b/file.cpp
+@@ -75,10 +75,15 @@ APIRET t_File::GetFormatDescription (t_F
+             case LIBEWF_FORMAT_ENCASE4: SubFormat="Encase4" ; break;
+             case LIBEWF_FORMAT_ENCASE5: SubFormat="Encase5" ; break;
+             case LIBEWF_FORMAT_ENCASE6: SubFormat="Encase6" ; break;
+-            case LIBEWF_FORMAT_FTK    : SubFormat="FTK"     ; break;
++            case LIBEWF_FORMAT_ENCASE7: SubFormat="Encase7" ; break;
++            case LIBEWF_FORMAT_FTK_IMAGER    : SubFormat="FTK"     ; break;
+             case LIBEWF_FORMAT_SMART  : SubFormat="Smart"   ; break;
+-            case LIBEWF_FORMAT_LVF    : SubFormat="LVF"     ; break;
++            case LIBEWF_FORMAT_LOGICAL_ENCASE5    : SubFormat="LVF"     ; break;
++            case LIBEWF_FORMAT_LOGICAL_ENCASE6    : SubFormat="LVF6"    ; break;
++            case LIBEWF_FORMAT_LOGICAL_ENCASE7    : SubFormat="LVF7"    ; break;
+             case LIBEWF_FORMAT_LINEN5 : SubFormat="Linen5"  ; break;
++            case LIBEWF_FORMAT_LINEN6 : SubFormat="Linen6"  ; break;
++            case LIBEWF_FORMAT_LINEN7 : SubFormat="Linen7"  ; break;
+             case AEWF                 : SubFormat="Guymager"; break;
+             default                   : CHK (ERROR_FILE_INVALID_EWF_FORMAT)
+          }
+@@ -125,11 +130,16 @@ APIRET t_File::GetFormatExtension (t_For
+             case LIBEWF_FORMAT_ENCASE4:
+             case LIBEWF_FORMAT_ENCASE5:
+             case LIBEWF_FORMAT_ENCASE6:
++            case LIBEWF_FORMAT_ENCASE7:
+             case LIBEWF_FORMAT_LINEN5 :
+-            case LIBEWF_FORMAT_FTK    :
++            case LIBEWF_FORMAT_LINEN6 :
++            case LIBEWF_FORMAT_LINEN7 :
++            case LIBEWF_FORMAT_FTK_IMAGER    :
+             case AEWF                 : Wild=".E??"; Human=".Exx"; break;
+             case LIBEWF_FORMAT_SMART  : Wild=".s??"; Human=".sxx"; break;
+-            case LIBEWF_FORMAT_LVF    : Wild=".l??"; Human=".lxx"; break;
++            case LIBEWF_FORMAT_LOGICAL_ENCASE7    : /*XXX really? */
++            case LIBEWF_FORMAT_LOGICAL_ENCASE6    : /*XXX really? */
++            case LIBEWF_FORMAT_LOGICAL_ENCASE5    : Wild=".l??"; Human=".lxx"; break;
+             default                   : CHK (ERROR_FILE_INVALID_EWF_FORMAT)
+          }
+          break;
+--- a/dlgacquire.cpp
++++ b/dlgacquire.cpp
+@@ -1123,9 +1123,14 @@ void t_DlgAcquire::SlotAccept (void)
+             return;
+          }
+          SplitSize = NumValue * UnitIndexToMultiplier (DlgAcquireGetField(CFG_DLGACQUIRE_SPLITFILEUNIT)->pComboBox->currentIndex());
+-         #if ((LIBEWF_VERSION != 20100226) && (LIBEWF_VERSION != 20080501) && (LIBEWF_VERSION != 20111015))
++         #if ((LIBEWF_VERSION != 20100226) && (LIBEWF_VERSION != 20080501) && (LIBEWF_VERSION != 20111015) && (LIBEWF_VERSION != 20130416))
+             #error "Please check EWF documentation for newer Encase formats and adjust following code"
+          #endif
++         /*
++          * file libewf/libewf_segment_file.c function
++          * libewf_segment_file_write_chunks_section_correction()
++          * only uses INT64_MAX chunk size for Encase6 not Encase7
++          */
+          if (pOwn->pRadioButtonFormatEWF->isChecked())
+          {
+             if ((CONFIG(EwfFormat) == LIBEWF_FORMAT_ENCASE6) ||
+@@ -1146,7 +1151,7 @@ void t_DlgAcquire::SlotAccept (void)
+                {
+                   QMessageBox::information (this, tr ("Incorrect value", "Dialog title"),
+                                                   tr ("The split size for the configured EWF format must be in the range %1 - %2 MiB. "
+-                                                      "For bigger files, switch to ""Encase6"" format or later (see Guymager configuration file, parameter EwfFormat).")
++                                                      "For bigger files, switch to ""Encase6"" format (see Guymager configuration file, parameter EwfFormat).")
+                                                   .arg(EWF_MIN_SEGMENT_SIZE/(1024*1024))
+                                                   .arg(EWF_MAX_SEGMENT_SIZE/(1024*1024)), QMessageBox::Ok);
+                   return;
+--- a/main.cpp
++++ b/main.cpp
+@@ -462,7 +462,8 @@ static APIRET MainGo (int argc, char *ar
+ 
+    // Initialise libewf
+    // -----------------
+-   libewf_set_notify_values (stderr, CONFIG (VerboseLibewf) ? 1 : 0);
++   libewf_notify_set_stream(stderr, NULL);
++   libewf_notify_set_verbose(CONFIG (VerboseLibewf) ? 1 : 0);
+ 
+    // Create central data structures
+    // ------------------------------
+--- a/threadcompress.cpp
++++ b/threadcompress.cpp
+@@ -114,7 +114,7 @@ void t_ThreadCompress::run (void)
+    size_t          CompressedMaxSize = 0;
+    size_t          CompressedSize    = 0;
+    void          *pHandle;
+-   LIBEWF_HANDLE *pEwfHandle  = NULL;
++   libewf_handle_t *pEwfHandle  = NULL;
+    t_Aewf        *pAewfHandle = NULL;
+ // t_Aaff        *pAaffHandle = NULL;
+    ssize_t         rc;
+@@ -132,7 +132,7 @@ void t_ThreadCompress::run (void)
+    {
+       case t_File::EWF:  if (CONFIG(EwfFormat) == t_File::AEWF)
+                               pAewfHandle = (t_Aewf *)        pHandle;
+-                         else pEwfHandle  = (LIBEWF_HANDLE *) pHandle;
++                         else pEwfHandle  = (libewf_handle_t *) pHandle;
+                          break;
+       case t_File::AAFF: // pAawfHandle = (t_Aawf *) pHandle;
+                          break;
+@@ -176,11 +176,11 @@ void t_ThreadCompress::run (void)
+                else
+                {
+                   CompressedSize = CompressedMaxSize;   // Must be initialised with the max buffer size (we use this one instead of MULTITHREADED_COMPRESSION_FIFO_BLOCK_SIZE in order to check if ti works as tols in the zlib docu)
+-                  rc = libewf_raw_write_prepare_buffer (pEwfHandle, pFifoBlockIn ->Buffer, pFifoBlockIn->DataSize,
++                  rc = libewf_handle_prepare_write_chunk(pEwfHandle, pFifoBlockIn ->Buffer, pFifoBlockIn->DataSize,
+                                                                     pFifoBlockOut->Buffer, &CompressedSize,
+                                                                    &pFifoBlockOut->EwfCompressionUsed,
+                                                                    &pFifoBlockOut->EwfChunkCRC,
+-                                                                   &pFifoBlockOut->EwfWriteCRC);
++                                                                   &pFifoBlockOut->EwfWriteCRC, NULL);
+                   if (pFifoBlockOut->EwfCompressionUsed)
+                   {
+                      pFifoBlockOut->EwfDataSize = CompressedSize;                        // Data to be forwarded is contained in
+--- a/threadwrite.cpp
++++ b/threadwrite.cpp
+@@ -349,7 +349,7 @@ class t_OutputFileEWF: public t_OutputFi
+       {
+          QString         Uname;
+          QString         GuymagerVersion;
+-         LIBEWF_HANDLE *pFile;
++         libewf_handle_t *pFile;
+          char          *pAsciiFileName;
+          QByteArray      AsciiFileName = (pDevice->Acquisition.ImagePath + pDevice->Acquisition.ImageFilename).toAscii();
+ 
+@@ -379,41 +379,45 @@ class t_OutputFileEWF: public t_OutputFi
+             }
+ 
+             CHK_EXIT (poThreadWrite->SetDebugMessage ("Verification: Calling libewf_open"))
+-            pFile = libewf_open (poImageFilenameArr, oImageFileCount, libewf_get_flags_read());
+-            CHK_EXIT (poThreadWrite->SetDebugMessage ("Verification: Returning from libewf_open"))
+-            if (pFile == NULL)
++            if (libewf_handle_initialize(&pFile, NULL) != 1 ||
++                libewf_handle_open(pFile, poImageFilenameArr, oImageFileCount, LIBEWF_ACCESS_FLAG_READ, NULL) != 1)
+             {
+                LOG_INFO ("[%s] Error while reopening EWF for verification. The files are:", QSTR_TO_PSZ (poDevice->LinuxDevice))
+                for (i=0; i<oImageFileCount; i++)
+                   LOG_INFO ("%s", poImageFilenameArr[i])
+                return ERROR_THREADWRITE_OPEN_FAILED;
+             }
++            CHK_EXIT (poThreadWrite->SetDebugMessage ("Verification: Returning from libewf_open"))
+          }
+          else
+          {
+             char *pAsciiFileName = AsciiFileName.data();
+ 
+-            pFile = libewf_open (&pAsciiFileName, 1, LIBEWF_OPEN_WRITE);
+-            if (pFile == NULL)
++            if (libewf_handle_initialize(&pFile, NULL) != 1 ||
++                libewf_handle_open(pFile, &pAsciiFileName, 1, LIBEWF_OPEN_WRITE, NULL) != 1)
+                return ERROR_THREADWRITE_OPEN_FAILED;
+ 
+             #define STR_AND_LEN(QStr) QStr.toAscii().data(), strlen(QStr.toAscii().data())
++            #define U8S_AND_LEN(s) (const uint8_t *)s, strlen((const char *)s)
+ 
+-            CHK_LIBEWF (libewf_set_format             (pFile, (uint8_t) CONFIG (EwfFormat)))
+-            CHK_LIBEWF (libewf_set_media_size         (pFile, pDevice->Size))
+-            CHK_LIBEWF (libewf_set_bytes_per_sector   (pFile, (unsigned int) pDevice->SectorSize))
+-            CHK_LIBEWF (libewf_set_sectors_per_chunk  (pFile, pDevice->FifoBlockSize / pDevice->SectorSize))
+-            CHK_LIBEWF (libewf_set_segment_file_size  (pFile, pDevice->Acquisition.SplitFileSize))
+-            CHK_LIBEWF (libewf_set_compression_values (pFile, CONFIG (EwfCompression), 0)) // last parameter must be set to 0, else, only empty-block compression is done
+-            CHK_LIBEWF (libewf_set_media_type         (pFile, pDevice->Removable ? LIBEWF_MEDIA_TYPE_REMOVABLE : LIBEWF_MEDIA_TYPE_FIXED))
+-            CHK_LIBEWF (libewf_set_volume_type        (pFile, LIBEWF_VOLUME_TYPE_PHYSICAL))
+-            CHK_LIBEWF (libewf_set_error_granularity  (pFile, 1))
+-
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"case_number"    , STR_AND_LEN(pDevice->Acquisition.CaseNumber    )))
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"description"    , STR_AND_LEN(pDevice->Acquisition.Description   )))
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"examiner_name"  , STR_AND_LEN(pDevice->Acquisition.Examiner      )))
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"evidence_number", STR_AND_LEN(pDevice->Acquisition.EvidenceNumber)))
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"notes"          , STR_AND_LEN(pDevice->Acquisition.Notes         )))
++            CHK_LIBEWF (libewf_handle_set_format              (pFile, (uint8_t) CONFIG (EwfFormat), NULL))
++            CHK_LIBEWF (libewf_handle_set_media_size          (pFile, pDevice->Size, NULL))
++            CHK_LIBEWF (libewf_handle_set_bytes_per_sector    (pFile, (unsigned int) pDevice->SectorSize, NULL))
++            CHK_LIBEWF (libewf_handle_set_sectors_per_chunk   (pFile, pDevice->FifoBlockSize / pDevice->SectorSize, NULL))
++            CHK_LIBEWF (libewf_handle_set_maximum_segment_size(pFile, pDevice->Acquisition.SplitFileSize, NULL))
++            CHK_LIBEWF (libewf_handle_set_compression_values  (pFile, CONFIG (EwfCompression), 0, NULL))
++            CHK_LIBEWF (libewf_handle_set_media_type          (pFile, pDevice->Removable ? LIBEWF_MEDIA_TYPE_REMOVABLE : LIBEWF_MEDIA_TYPE_FIXED, NULL))
++            uint8_t media_flags = 0;
++            CHK_LIBEWF (libewf_handle_get_media_flags         (pFile, &media_flags, NULL))
++            media_flags |= LIBEWF_MEDIA_FLAG_PHYSICAL;
++            CHK_LIBEWF (libewf_handle_set_media_flags         (pFile, media_flags, NULL))
++            CHK_LIBEWF (libewf_handle_set_error_granularity   (pFile, 1, NULL))
++
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("case_number"    ), (const uint8_t *)STR_AND_LEN(pDevice->Acquisition.CaseNumber    ), NULL))
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("description"    ), (const uint8_t *)STR_AND_LEN(pDevice->Acquisition.Description   ), NULL))
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("examiner_name"  ), (const uint8_t *)STR_AND_LEN(pDevice->Acquisition.Examiner      ), NULL))
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("evidence_number"), (const uint8_t *)STR_AND_LEN(pDevice->Acquisition.EvidenceNumber), NULL))
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("notes"          ), (const uint8_t *)STR_AND_LEN(pDevice->Acquisition.Notes         ), NULL))
+ 
+             CHK (ToolSysInfoUname (Uname))
+             GuymagerVersion = QString("guymager ") + QString(pCompileInfoVersion);
+@@ -423,8 +427,8 @@ class t_OutputFileEWF: public t_OutputFi
+                Uname           = Uname          .left (THREADWRITE_ENCASE_MAXLEN_OSVERSION    );
+             }
+ 
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"acquiry_operating_system", STR_AND_LEN(Uname)))
+-            CHK_LIBEWF (libewf_set_header_value (pFile, (char *)"acquiry_software_version", STR_AND_LEN(GuymagerVersion)))
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("acquiry_operating_system"), (const uint8_t *)STR_AND_LEN(Uname), NULL))
++            CHK_LIBEWF (libewf_handle_set_header_value (pFile, U8S_AND_LEN("acquiry_software_version"), (const uint8_t *)STR_AND_LEN(GuymagerVersion), NULL))
+ 
+             #undef STR_AND_LEN
+ 
+@@ -443,16 +447,20 @@ class t_OutputFileEWF: public t_OutputFi
+ 
+          if (oHasCompressionThreads)
+          {
++            uint8_t checksum_buffer[ 4 ];
++
+             Size = pFifoBlock->EwfDataSize;
+-            Written = libewf_raw_write_buffer (poFile, pFifoBlock->Buffer, Size, pFifoBlock->DataSize,
++            Written = libewf_handle_write_chunk(poFile, pFifoBlock->Buffer, Size, pFifoBlock->DataSize,
+                                                                                  pFifoBlock->EwfCompressionUsed,
++                                                                                 checksum_buffer,
+                                                                                  pFifoBlock->EwfChunkCRC,
+-                                                                                 pFifoBlock->EwfWriteCRC);
++                                                                                 pFifoBlock->EwfWriteCRC,
++                                                                                 NULL);
+          }
+          else
+          {
+             Size = pFifoBlock->DataSize;
+-            Written = libewf_write_buffer (poFile, pFifoBlock->Buffer, Size);
++            Written = libewf_handle_write_buffer (poFile, pFifoBlock->Buffer, Size, NULL);
+          }
+ 
+          if (Written != Size)
+@@ -484,7 +492,7 @@ class t_OutputFileEWF: public t_OutputFi
+          ToRead = GETMIN (Remaining, poDevice->FifoBlockSize);
+ 
+          CHK_EXIT (poThreadWrite->SetDebugMessage ("Verification: Calling libewf_read_buffer"))
+-         Read = libewf_read_buffer (poFile, poVerifyBuff, ToRead);
++         Read = libewf_handle_read_buffer (poFile, poVerifyBuff, ToRead, NULL);
+          CHK_EXIT (poThreadWrite->SetDebugMessage ("Verification: Returning from libewf_read_buffer"))
+ 
+          if (Read != (ssize_t)ToRead)
+@@ -532,7 +540,7 @@ class t_OutputFileEWF: public t_OutputFi
+                      To = Next;
+                      i++;
+                   }
+-                  CHK_LIBEWF (libewf_add_acquiry_error(poFile, From, To - From + 1))
++                  CHK_LIBEWF (libewf_handle_add_acquiry_error(poFile, From, To - From + 1, NULL))
+                }
+             }
+          }
+@@ -540,13 +548,15 @@ class t_OutputFileEWF: public t_OutputFi
+          // Write hash
+          // ----------
+          if (!oVerification && poDevice->HasCompressionThreads() && poDevice->Acquisition.CalcMD5)
+-            CHK_LIBEWF (libewf_set_md5_hash (poFile, (uint8_t*)&poDevice->MD5Digest, HASH_MD5_DIGEST_LENGTH))
++            CHK_LIBEWF (libewf_handle_set_md5_hash (poFile, (uint8_t*)&poDevice->MD5Digest, HASH_MD5_DIGEST_LENGTH, NULL))
+ 
+          // Close and cleanup
+          // -----------------
+-         rc = libewf_close (poFile);
+-         if (rc != 0)
++         rc = 0;
++         if (libewf_handle_close(poFile, NULL) != 0 ||
++             libewf_handle_free(&poFile, NULL) != 1)
+          {
++            rc = -1;
+             LOG_ERROR ("[%s] Error in libewf function: libewf_close, rc=%d", QSTR_TO_PSZ (poDevice->LinuxDevice), rc)
+             return ERROR_THREADWRITE_LIBEWF_FAILED;
+          }
+@@ -576,7 +586,7 @@ class t_OutputFileEWF: public t_OutputFi
+       }
+ 
+    private:
+-      LIBEWF_HANDLE *poFile;
++      libewf_handle_t *poFile;
+       t_pDevice      poDevice;
+       bool            oVerification;
+       void          *poVerifyBuff;
diff -Nru guymager-0.6.7/debian/patches/series guymager-0.6.7/debian/patches/series
--- guymager-0.6.7/debian/patches/series	2012-06-07 17:21:33.000000000 +0200
+++ guymager-0.6.7/debian/patches/series	2013-12-25 01:11:30.000000000 +0100
@@ -2,3 +2,4 @@
 ftbfs-gcc-4.7.diff
 reenable_libguytools_and_libewf.diff
 fix_sysconf_build_failure.diff
+newer_libewf.diff
diff -Nru guymager-0.6.7/debian/rules guymager-0.6.7/debian/rules
--- guymager-0.6.7/debian/rules	2012-06-07 17:36:45.000000000 +0200
+++ guymager-0.6.7/debian/rules	2013-12-25 01:12:00.000000000 +0100
@@ -9,7 +9,9 @@
 	dh_testdir
 	qmake-qt4 DEFINES+="SPLASH_DIR=\'\\\"/usr/share/guymager\\\"\' LANGUAGE_DIR=\'\\\"/usr/share/guymager\\\"\' LANGUAGE_DIR_QT=\'\\\"/usr/share/qt4/translations\\\"\'"
 	# ugly but only chance to find libparted in guymager :-/
-	sed -i "s/^const QString ThreadScanLibPartedSearchDirs.*/const QString ThreadScanLibPartedSearchDirs    = \\\"\/lib,\/lib\/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH),\/usr\/lib,\/usr\/local\/lib\\\";       \/\/ Separate directories by commas/" threadscan.cpp
+	test -e threadscan.cpp.bak || mv threadscan.cpp threadscan.cpp.bak
+	sed "s/^const QString ThreadScanLibPartedSearchDirs.*/const QString ThreadScanLibPartedSearchDirs    = \\\"\/lib,\/lib\/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH),\/usr\/lib,\/usr\/local\/lib\\\";       \/\/ Separate directories by commas/" \
+	    threadscan.cpp.bak >threadscan.cpp
 	touch configure-stamp
 
 build: build-arch build-indep
@@ -35,6 +37,8 @@
 	rm -f guymager
 	rm -f guymager_de.qm guymager_en.qm guymager_fr.qm guymager_it.qm guymager_nl.qm
 	rm -f Makefile
+	if test -e threadscan.cpp.bak; then mv threadscan.cpp.bak threadscan.cpp; fi
+	rm -f guymager_cn.qm compileinfo.cpp manuals/guymager.1
 	dh_clean
 
 install: build


More information about the forensics-devel mailing list