Hello everyone, I have been trying to build eDuke32[1] (a Free source port of Duke Nukem 3D) with Guix following their instructions[2], but it looks like I am unable to set up the environment properly. I first created the following Guile script (omitting some version, source, description and synopsis for brevity):
(define-public eduke32 (package (name "eduke32") (build-system gnu-build-system) (arguments `()) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer))) ("glu" ,glu) ("libvorbis" ,libvorbis) ("libvpx" ,libvpx) ("flac" ,flac) ("gtk+" ,gtk+-2))))) Then I typed `guix environment --load=eduke32.scm` in my shell to set up the build environment, and executed `make`. This works at first, it builds the following files: https://pastebin.com/FyJKK6BD Then it fails at this step: In file included from source/build/include/mutex.h:10:0, from source/build/include/osd.h:12, from source/build/include/baselayer.h:11, from source/duke3d/src/duke3d.h:28, from source/duke3d/src/sdlmusic.cpp:35: source/build/include/sdl_inc.h:63:25: fatal error: SDL_mixer.h: No such file or directory compilation terminated. Failed building obj/duke3d/sdlmusic.o from source/duke3d/src/sdlmusic.cpp! make: *** [GNUmakefile:982: obj/duke3d/sdlmusic.o] Error 1 Looking into the offending file shows the following code: #if defined NEED_SDL_MIXER # if defined SDL_USEFOLDER # if SDL_TARGET == 2 # include <SDL2/SDL_mixer.h> # else # include <SDL/SDL_mixer.h> # endif # else # include "SDL_mixer.h" # endif The second-to-last line is line 63; the compiler looks for the header file in the same directory as the source file, which is obviously wrong. So it seems like my environment specification did not set up SDL properly. Can someone who has experience with SDL please help me out to understand what is going wrong here? [1] http://eduke32.com/ [2] https://wiki.eduke32.com/wiki/Building_EDuke32_on_Linux