Package: assimp Version: 3.3.1~dfsg-1 Severity: important Tags: sid + patch Justification: FTBFS User: debian-m...@lists.debian.org Usertags: mips-patch
Hi, Package assimp FTBFS on big-endian architectures with following error: In file included from /«PKGBUILDDIR»/code/glTFAsset.h:65:0, from /«PKGBUILDDIR»/code/glTFImporter.cpp:55: /«PKGBUILDDIR»/code/glTFAsset.inl: In member function 'void glTF::Asset::ReadBinaryHeader(Assimp::IOStream&)': /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAsset.inl:906:5: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.version); ^~~~~~~~ /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAsset.inl:912:5: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.sceneFormat); ^~~~~~~~ /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAsset.inl:917:5: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.length); ^~~~~~~~ /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAsset.inl:918:5: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.sceneLength); ^~~~~~~~ /«PKGBUILDDIR»/code/glTFAssetWriter.inl: In member function 'void glTF::AssetWriter::WriteBinaryData(Assimp::IOStream*, size_t)': /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAssetWriter.inl:397:9: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.version); ^~~~~~~~ /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAssetWriter.inl:400:9: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.length); ^~~~~~~~ /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAssetWriter.inl:403:9: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.sceneLength); ^~~~~~~~ /«PKGBUILDDIR»/code/ByteSwapper.h:217:24: error: 'ByteSwap' has not been declared # define AI_SWAP4(p) ByteSwap::Swap4(&(p)) ^ /«PKGBUILDDIR»/code/glTFAssetWriter.inl:406:9: note: in expansion of macro 'AI_SWAP4' AI_SWAP4(header.sceneFormat); ^~~~~~~~ build logs: https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=hppa&ver=3.3.1%7Edfsg-1&stamp=1470683943 https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=m68k&ver=3.3.1%7Edfsg-1&stamp=1470682578 https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=mips&ver=3.3.1%7Edfsg-1&stamp=1470684366 https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=powerpc&ver=3.3.1%7Edfsg-1&stamp=1470676134 https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=ppc64&ver=3.3.1%7Edfsg-1&stamp=1470681578 https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=s390x&ver=3.3.1%7Edfsg-1&stamp=1470677803 https://buildd.debian.org/status/fetch.php?pkg=assimp&arch=sparc64&ver=3.3.1%7Edfsg-1&stamp=1470842903 Macros aren't namespaced, pre-processor knows nothing about namespaces. AI_SWAP4(p) is just replaced with ByteSwap::Swap4(&(p)) function call, because of a missing namespace the compiler can't find the ByteSwap class. The attached patch fixes the build errors for big-endian architectures by adding the missing "using namespace Assimp" to glTFAsset.inl file. With this patch I was able to build assimp successfully for mips. It may fix the build for other architectures too. Regards, Daniel
--- assimp-3.3.1~dfsg.orig/code/glTFAsset.inl +++ assimp-3.3.1~dfsg/code/glTFAsset.inl @@ -40,6 +40,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE #include "StringUtils.h" +using namespace Assimp; + namespace glTF { namespace {