[Debian-med-packaging] Bug#804578: Bug#804578: Does not build using dcmtk 3.6.1

Julien Lamy lamy at unistra.fr
Wed Dec 2 10:24:35 UTC 2015


Hi,
In DCMTK 3.6.0, EC_Normal and ECC_Normal are copies of one another [1]
and so the patch replacing ECC_Normal by EC_Normal should introduce no
regression *with DCMTK 3.6.0*. In DCMTK 3.6.1, currently in unstable,
the API of error conditions has changed : ECC_Normal is not declared
anymore, the typedef of CONDITION has been removed [2] and some implicit
conversions are now invalid.

I'm not familiar with the code base of Aeskulap, but I'm guessing that
adding the rewrite of CONDITION to OFCondition should solve some of the
problems.

[1]
https://sources.debian.net/src/dcmtk/3.6.0-15/ofstd/libsrc/ofcond.cc/#L35
[2]
https://sources.debian.net/src/dcmtk/3.6.1~20150629-7/ofstd/libsrc/ofcond.cc/

-- 
Julien

Le 01/12/2015 16:12, Andreas Tille a écrit :
> Hi Gert,
> 
> switching to English and CC-ing the bug since the issue seems to be more
> complicated.
> 
> In the old dcmtk package aeskulap has built perfectly.  In URL
> 
>     http://support.dcmtk.org/docs/ofcond_8h-source.html
> 
> there are "EC_Normal" as well as "ECC_Normal".
> 
> In libdcmtk2-dev from Jessie the string exists exactly one times:
> 
> /usr/include/dcmtk $ grep -R ECC_Normal
> ofstd/ofcond.h:extern const OFConditionConst ECC_Normal;
> ofstd/ofcond.h:  OFCondition(const OFConditionConst& base = ECC_Normal)
> 
> 
> The EC_Normal mentioned by Gert occures way more:
> 
> /usr/include/dcmtk $ grep -R EC_Normal | grep -v ": *\*\+ "
> dcmnet/cond.h:#define ASC_NORMAL                    EC_Normal
> dcmnet/cond.h:#define DIMSE_NORMAL                  EC_Normal
> ofstd/ofcond.h:extern const OFCondition EC_Normal;
> dcmpstat/dvpsdef.h:if (result==EC_Normal)                                              \
> dcmpstat/dvpsdef.h:if (result==EC_Normal)                                              \
> dcmpstat/dvpsdef.h:if (writeresult==EC_Normal)                                         \
> dcmpstat/dvpsdef.h:if (result==EC_Normal)                                              \
> dcmpstat/dvpsdef.h:if (EC_Normal == dset.search((DcmTagKey &)a_name.getTag(), stack, ESM_fromHere, OFFalse)) \
> dcmpstat/dvpsdef.h:if (EC_Normal == item->search((DcmTagKey &)a_name.getTag(), stack, ESM_fromHere, OFFalse)) \
> dcmpstat/dvpsdef.h:if (rqDataset && (EC_Normal == rqDataset->search((DcmTagKey &)a_name.getTag(), stack, ESM_fromHere, OFFalse))) \
> dcmpstat/dvpsdef.h:if (result==EC_Normal)                                              \
> dcmdata/dctag.h:    /// current error code, EC_Normal if a valid VR for the tag is known
> dcmdata/dcovlay.h:      return EC_Normal;
> dcmdata/dcrledec.h:    if (compressedSize == 0) return EC_Normal;
> dcmdata/dcrledec.h:      result = EC_Normal;
> dcmdata/libi2d/i2dbmps.h:    return EC_Normal;
> dcmsr/dsrtlist.h:            result = EC_Normal;
> dcmsr/dsrtlist.h:            result = EC_Normal;
> dcmsr/dsrtlist.h:                result = EC_Normal;
> dcmsr/dsrtlist.h:            result = EC_Normal;
> dcmsr/dsrtypes.h:                                    const OFCondition &searchCond = EC_Normal,
> 
> 
> What is astonishing is that at no point EC*_Normal gets a real
> value.  I commited a patch replacing ECC_Normal by EC_Normal but
> even than I'm running into build errors:
> 
>                  from poolservers.cpp:30:
> /usr/include/dcmtk/config/osconfig.h:796:0: note: this is the location of the previous definition
>  #define PACKAGE_NAME "dcmtk"
>  ^
> In file included from ../gettext.h:22:0,
>                  from poolservers.cpp:31:
> ../config.h:96:0: warning: "PACKAGE_VERSION" redefined
>  #define PACKAGE_VERSION ""
>  ^
> In file included from poolassociation.h:33:0,
>                  from poolservers.cpp:30:
> /usr/include/dcmtk/config/osconfig.h:814:0: note: this is the location of the previous definition
>  #define PACKAGE_VERSION "3.6.1"
>  ^
> In file included from imagepool.h:32:0,
>                  from poolservers.cpp:29:
> poolinstance.h:63:2: warning: 'typedef' was ignored in this declaration
>   };
>   ^
> In file included from poolservers.cpp:30:0:
> poolassociation.h:59:2: error: 'CONDITION' does not name a type
>   CONDITION Connect(Network* network, int lossy = 0);
>   ^
> poolassociation.h:66:2: error: 'CONDITION' does not name a type
>   CONDITION Drop(CONDITION cond=DIMSE_NORMAL);
>   ^
> poolassociation.h:71:10: error: 'CONDITION' does not name a type
>   virtual CONDITION SendObject(DcmDataset* dataset);
>           ^
> poolassociation.h:76:10: error: 'CONDITION' does not name a type
>   virtual CONDITION SendObject(DcmFileFormat* dcmff);
>           ^
> 
> Any idea?
> 
> Kind regards
> 
>       Andreas.
> 
> 
> 
> 
> On Tue, Dec 01, 2015 at 02:58:07PM +0100, Gert Wollny wrote:
>>
>> Hallo Andreas, 
>>
>> dicomdir.cpp:46:35: error: 'ECC_Normal' was not declared in this
>>> scope
>>>          if ( (ret=dir.error()) != ECC_Normal ) {
>>>
>>
>> In dicomscope have ich nur "EC_Normal" gesehen, aber nicht "ECC_Normal"
>>
>> Ciao, 
>> Gert 
>>
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/debian-med-packaging/attachments/20151202/30ec6504/attachment.sig>


More information about the Debian-med-packaging mailing list