[Slackbuilds-users] DevIL - Does not Compile when nvidia-texture-tools is installed

Dave Woodfall dave at slackbuilds.org
Sun May 22 20:35:23 UTC 2022


On 22/05/22 14:46,
Konrad J Hambrick <kjhambrick at gmail.com> put forth the proposition:
> All --
> I emailed the maintainer on May 12 but have received no reply.
> Below is the email I sent.
> The Punchline is that the DevIL SBo will not compile on my Slackware64
> 15.0 + Multilib System when the nvidia-texture-tools SBo is installed.
> The simplest fix is to turn off nvidia-texture-tools via a cmake Config
<snip>
> Is this the best place to post such info ?
> Thanks everyone !
> -- kjh

This is the right place, usually we accept patches as attachments,
but if this only the one flag.  I can take a look this week.

We don't support multilib though, so do you know if it fails still on
a non-multilib full 15.0 installation?

Link to blog post on sending patches:
https://slackblogs.blogspot.com/2022/03/how-to-send-patches-to-sbo.html.

> # ----------------------original email to the maintainer ------------
> Yth - Arnaud
> I am running Slackware64 15.0 System with Multilib +
> NVIDIA-Linux-x86_64-510.68.02.run
> I discovered that if nvidia-texture-tools ( aka nvtt ) is installed, that
> DevIL will not compile.
> I tried with nvidia-texture-tools version 2.1.1 and also with the more
> recent version 2.1.2
> There are missing Header Files in /usr/include/nvcore/ ( and maybe others )
> To reproduce:  build and install nvidia-texture-tools.SlackBuild  and then
> try to build DevIL.SlackBuild
> I changed the nvidia-texture-tools CMakeLists.txt so that the header files
> are installed in /usr/include/{nvtt,nvthread,nvmath,nvimage,nvcore}/
> as well as installing nvconfig.h
> The DevIL.SlackBuild compile makes it past the missing Headers in src-IL/
> However, the compiler finally fails building
> src-IL/CMakeFiles/IL.dir/src/il_nvidia.cpp.o because the nvtt headers
> differ from what is DevIL expects to find ( output below mu sig )
> I found a CMake switch ( -DIL_USE_DXTC_NVIDIA=NO ) that can be turned off
> in the DevIL.SlackBuild to avoid nvtt altogether.
> Then it builds as expected.
> Here is diff -Naur
> #-------------------- cut  here --------------
> # diff -Naur DevIL~01.SlackBuild DevIL.SlackBuild
> --- or/DevIL.SlackBuild 2022-04-23 17:41:07.620019227 -0500
> +++ DevIL.SlackBuild    2022-05-12 11:19:49.873854478 -0500
> @@ -73,6 +73,7 @@
>      -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
>      -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -std=c++14 -fpermissive" \
>      -DCMAKE_INSTALL_PREFIX=/usr \
> +    -DIL_USE_DXTC_NVIDIA=NO \
>      -DCMAKE_BUILD_TYPE=Release ..
>    make
>    make install/strip DESTDIR=$PKG
> # --------------------- cut there -------------------
> Thanks for all the SlackBuilds !
> -- kjh
> This is the failure after installing the nvtt header files.
> /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp: In function 'ILubyte*
> ilNVidiaCompressDXT(ILubyte*, ILuint, ILuint, ILuint, ILenum, ILuint*)':
> /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:104:28: error: cannot declare
> variable 'outputHandler' to be of abstract type 'ilOutputHandlerMem'
>   104 |         ilOutputHandlerMem outputHandler(Width, Height, DxtFormat);
>       |                            ^~~~~~~~~~~~~
> /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:38:8: note:   because the
> following virtual functions are pure within 'ilOutputHandlerMem':
>    38 | struct ilOutputHandlerMem : public nvtt::OutputHandler
>       |        ^~~~~~~~~~~~~~~~~~
> In file included from /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:20:
> /usr/include/nvtt/nvtt.h:341:22: note:     'virtual void
> nvtt::OutputHandler::endImage()'
>   341 |         virtual void endImage() = 0;
>       |                      ^~~~~~~~
> /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp: In function 'ILuint
> ilNVidiaCompressDXTFile(ILubyte*, ILuint, ILuint, ILuint, ILenum)':
> /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:188:29: error: cannot declare
> variable 'outputHandler' to be of abstract type 'ilOutputHandlerFile'
>   188 |         ilOutputHandlerFile outputHandler(Width, Height, DxtFormat);
>       |                             ^~~~~~~~~~~~~
> /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:148:8: note:   because the
> following virtual functions are pure within 'ilOutputHandlerFile':
>   148 | struct ilOutputHandlerFile : public nvtt::OutputHandler
>       |        ^~~~~~~~~~~~~~~~~~~
> In file included from /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:20:
> /usr/include/nvtt/nvtt.h:341:22: note:     'virtual void
> nvtt::OutputHandler::endImage()'
>   341 |         virtual void endImage() = 0;
>       |                      ^~~~~~~~
> make[2]: *** [src-IL/CMakeFiles/IL.dir/build.make:678:
> src-IL/CMakeFiles/IL.dir/src/il_nvidia.cpp.o] Error 1
> make[1]: *** [CMakeFiles/Makefile2:134: src-IL/CMakeFiles/IL.dir/all] Error
> 2
> make: *** [Makefile:136: all] Error 2

--
Dave

sbo-maintainer-tools:
https://slackbuilds.org/repository/15.0/system/sbo-maintainer-tools/
SBo templates:
https://slackbuilds.org/templates/
How to format github downloads:
https://slackbuilds.org/GITHUB_URLs.txt


More information about the SlackBuilds-users mailing list