From 7b8a753672d65a0bc5f51e0063aa4c80688ef4ee Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 2 Aug 2018 11:56:01 +0300 Subject: gnu: irrlicht: Don't use bundled libraries. * gnu/packages/patches/irrlicht-use-system-libs.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/games.scm (irrlicht)[source]: Add patch. Remove bundled code and binaries in a snippet. [native-inputs]: Remove unzip. [inputs]: Remove glu, add bzip2, libjpeg, libpng, libx11, libxx86vm. [arguments]: Remove custom 'unpack phase, add custom 'chdir-to-source phase and adjust 'fix-build-env phase to changes. --- gnu/local.mk | 1 + gnu/packages/games.scm | 45 +++-- .../patches/irrlicht-use-system-libs.patch | 202 +++++++++++++++++++++ 3 files changed, 235 insertions(+), 13 deletions(-) create mode 100644 gnu/packages/patches/irrlicht-use-system-libs.patch diff --git a/gnu/local.mk b/gnu/local.mk index f615a10f3b..d1f9a193bb 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -805,6 +805,7 @@ dist_patch_DATA = \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \ %D%/packages/patches/intltool-perl-compatibility.patch \ + %D%/packages/patches/irrlicht-use-system-libs.patch \ %D%/packages/patches/isl-0.11.1-aarch64-support.patch \ %D%/packages/patches/jacal-fix-texinfo.patch \ %D%/packages/patches/jamvm-arm.patch \ diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index c96ccede1e..5ff25e431b 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1483,34 +1483,53 @@ are primarily in English, however some in other languages are provided.") "/" version "/irrlicht-" version ".zip")) (sha256 (base32 - "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl")))) + "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl")) + (patches (search-patches "irrlicht-use-system-libs.patch")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file-recursively + '("bin" ; bundled compiled Windows binaries" + "source/Irrlicht/MacOSX" + "source/Irrlicht/bzip2" + "source/Irrlicht/jpeglib" + "source/Irrlicht/libpng" + "source/Irrlicht/lzma" + "source/Irrlicht/zlib")) + (delete-file "source/Irrlicht/glext.h") + (delete-file "source/Irrlicht/glxext.h") + (delete-file "source/Irrlicht/wglext.h") + #t)))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'fix-build-env + (add-after 'unpack 'chdir-to-source + (lambda _ + ;; The actual source is buried a few directories deep. + (chdir "source/Irrlicht/") + #t)) + (add-after 'chdir-to-source 'fix-build-env (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (substitute* "Makefile" (("INSTALL_DIR = /usr/local/lib") - (string-append "INSTALL_DIR = " out "/lib"))) + (string-append "INSTALL_DIR = " out "/lib")) + ;; Add '-fpermissive' to the CXXFLAGS + (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp ;; The Makefile assumes these directories exist. (mkdir-p (string-append out "/lib")) (mkdir-p (string-append out "/include"))))) - (replace 'unpack - (lambda* (#:key source #:allow-other-keys) - (and (zero? (system* "unzip" source)) - ;; The actual source is buried a few directories deep. - (chdir (string-append "irrlicht-" ,version - "/source/Irrlicht/"))))) (delete 'configure)) ; no configure script #:tests? #f ; no check target #:make-flags '("CC=gcc" "sharedlib"))) - (native-inputs - `(("unzip" ,unzip))) (inputs - `(("mesa" ,mesa) - ("glu" ,glu))) + `(("bzip2" ,bzip2) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libx11" ,libx11) + ("libxxf86vm" ,libxxf86vm) + ("mesa" ,mesa))) (synopsis "3D game engine written in C++") (description "The Irrlicht Engine is a high performance realtime 3D engine written in diff --git a/gnu/packages/patches/irrlicht-use-system-libs.patch b/gnu/packages/patches/irrlicht-use-system-libs.patch new file mode 100644 index 0000000000..e764f411d3 --- /dev/null +++ b/gnu/packages/patches/irrlicht-use-system-libs.patch @@ -0,0 +1,202 @@ +This patch is a combination of the two following patches with minor +changes to the install code +https://sources.debian.org/src/irrlicht/1.8.4+dfsg1-1/debian/patches/debian/link-against-needed-libs.diff/ +https://sources.debian.org/src/irrlicht/1.8.4+dfsg1-1/debian/patches/debian/use-system-libs.diff/ + + +--- + include/IrrCompileConfig.h | 26 +++++++++------------ + source/Irrlicht/CIrrDeviceLinux.h | 2 +- + source/Irrlicht/COpenGLExtensionHandler.h | 8 +++---- + source/Irrlicht/COpenGLSLMaterialRenderer.h | 2 +- + source/Irrlicht/Makefile | 15 ++++++------ + 5 files changed, 25 insertions(+), 28 deletions(-) + +diff --git a/include/IrrCompileConfig.h b/include/IrrCompileConfig.h +index 6bb0589..2216353 100644 +--- a/include/IrrCompileConfig.h ++++ b/include/IrrCompileConfig.h +@@ -238,6 +238,17 @@ for Windows based systems. You also have to set #define UNICODE for this to comp + #undef _IRR_WCHAR_FILESYSTEM + #endif + ++//! Define _IRR_COMPILE_WITH_ZLIB_ to enable compiling the engine using zlib. ++/** This enables the engine to read from compressed .zip archives. If you ++disable this feature, the engine can still read archives, but only uncompressed ++ones. */ ++#define _IRR_COMPILE_WITH_ZLIB_ ++ ++//! Define _IRR_USE_NON_SYSTEM_ZLIB_ to let irrlicht use the zlib which comes with irrlicht. ++/** If this is commented out, Irrlicht will try to compile using the zlib installed in the system. ++ This is only used when _IRR_COMPILE_WITH_ZLIB_ is defined. */ ++#undef _IRR_USE_NON_SYSTEM_ZLIB_ ++ + //! Define _IRR_COMPILE_WITH_JPEGLIB_ to enable compiling the engine using libjpeg. + /** This enables the engine to read jpeg images. If you comment this out, + the engine will no longer read .jpeg images. */ +@@ -249,10 +260,7 @@ the engine will no longer read .jpeg images. */ + //! Define _IRR_USE_NON_SYSTEM_JPEG_LIB_ to let irrlicht use the jpeglib which comes with irrlicht. + /** If this is commented out, Irrlicht will try to compile using the jpeg lib installed in the system. + This is only used when _IRR_COMPILE_WITH_LIBJPEG_ is defined. */ +-#define _IRR_USE_NON_SYSTEM_JPEG_LIB_ +-#ifdef NO_IRR_USE_NON_SYSTEM_JPEG_LIB_ + #undef _IRR_USE_NON_SYSTEM_JPEG_LIB_ +-#endif + + //! Define _IRR_COMPILE_WITH_LIBPNG_ to enable compiling the engine using libpng. + /** This enables the engine to read png images. If you comment this out, +@@ -265,10 +273,7 @@ the engine will no longer read .png images. */ + //! Define _IRR_USE_NON_SYSTEM_LIBPNG_ to let irrlicht use the libpng which comes with irrlicht. + /** If this is commented out, Irrlicht will try to compile using the libpng installed in the system. + This is only used when _IRR_COMPILE_WITH_LIBPNG_ is defined. */ +-#define _IRR_USE_NON_SYSTEM_LIB_PNG_ +-#ifdef NO_IRR_USE_NON_SYSTEM_LIB_PNG_ + #undef _IRR_USE_NON_SYSTEM_LIB_PNG_ +-#endif + + //! Define _IRR_D3D_NO_SHADER_DEBUGGING to disable shader debugging in D3D9 + /** If _IRR_D3D_NO_SHADER_DEBUGGING is undefined in IrrCompileConfig.h, +@@ -602,10 +607,7 @@ ones. */ + /** If this is commented out, Irrlicht will try to compile using the zlib + installed on the system. This is only used when _IRR_COMPILE_WITH_ZLIB_ is + defined. */ +-#define _IRR_USE_NON_SYSTEM_ZLIB_ +-#ifdef NO_IRR_USE_NON_SYSTEM_ZLIB_ + #undef _IRR_USE_NON_SYSTEM_ZLIB_ +-#endif + //! Define _IRR_COMPILE_WITH_ZIP_ENCRYPTION_ if you want to read AES-encrypted ZIP archives + #define _IRR_COMPILE_WITH_ZIP_ENCRYPTION_ + #ifdef NO_IRR_COMPILE_WITH_ZIP_ENCRYPTION_ +@@ -623,18 +625,12 @@ library. */ + /** If this is commented out, Irrlicht will try to compile using the bzlib + installed on the system. This is only used when _IRR_COMPILE_WITH_BZLIB_ is + defined. */ +-#define _IRR_USE_NON_SYSTEM_BZLIB_ +-#ifdef NO_IRR_USE_NON_SYSTEM_BZLIB_ + #undef _IRR_USE_NON_SYSTEM_BZLIB_ +-#endif + //! Define _IRR_COMPILE_WITH_LZMA_ if you want to use LZMA compressed zip files. + /** LZMA is a very efficient compression code, known from 7zip. Irrlicht + currently only supports zip archives, though. */ +-#define _IRR_COMPILE_WITH_LZMA_ +-#ifdef NO_IRR_COMPILE_WITH_LZMA_ + #undef _IRR_COMPILE_WITH_LZMA_ + #endif +-#endif + + //! Define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_ if you want to mount folders as archives + #define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_ +diff --git a/source/Irrlicht/CIrrDeviceLinux.h b/source/Irrlicht/CIrrDeviceLinux.h +index 4d2a2c6..8cf24ba 100644 +--- a/source/Irrlicht/CIrrDeviceLinux.h ++++ b/source/Irrlicht/CIrrDeviceLinux.h +@@ -22,7 +22,7 @@ + #define GLX_GLXEXT_LEGACY 1 + #include + #ifdef _IRR_OPENGL_USE_EXTPOINTER_ +-#include "glxext.h" ++#include + #endif + #endif + +diff --git a/source/Irrlicht/COpenGLExtensionHandler.h b/source/Irrlicht/COpenGLExtensionHandler.h +index 1b77bad..3886a0e 100644 +--- a/source/Irrlicht/COpenGLExtensionHandler.h ++++ b/source/Irrlicht/COpenGLExtensionHandler.h +@@ -35,7 +35,7 @@ + #endif + #include + #if defined(_IRR_OPENGL_USE_EXTPOINTER_) +- #include "glext.h" ++ #include + #endif + #elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && !defined(_IRR_COMPILE_WITH_X11_DEVICE_) + #if defined(_IRR_OPENGL_USE_EXTPOINTER_) +@@ -48,7 +48,7 @@ + #define NO_SDL_GLEXT + #include + #include +- #include "glext.h" ++ #include + #else + #if defined(_IRR_OPENGL_USE_EXTPOINTER_) + #define GL_GLEXT_LEGACY 1 +@@ -60,9 +60,9 @@ + #include + #include + #if defined(_IRR_OPENGL_USE_EXTPOINTER_) +- #include "glext.h" ++ #include + #undef GLX_ARB_get_proc_address // avoid problems with local glxext.h +- #include "glxext.h" ++ #include + #endif + #endif + +diff --git a/source/Irrlicht/COpenGLSLMaterialRenderer.h b/source/Irrlicht/COpenGLSLMaterialRenderer.h +index ff71150..f8a6007 100644 +--- a/source/Irrlicht/COpenGLSLMaterialRenderer.h ++++ b/source/Irrlicht/COpenGLSLMaterialRenderer.h +@@ -25,7 +25,7 @@ + #include + #endif + #if defined(_IRR_OPENGL_USE_EXTPOINTER_) +- #include "glext.h" ++ #include + #endif + #endif + +diff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile +index 67a3899..d9ea7f3 100644 +--- a/source/Irrlicht/Makefile ++++ b/source/Irrlicht/Makefile +@@ -43,7 +43,7 @@ IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CIm + CImageWriterBMP.o CImageWriterJPG.o CImageWriterPCX.o CImageWriterPNG.o CImageWriterPPM.o CImageWriterPSD.o CImageWriterTGA.o + IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ) + IRRSWRENDEROBJ = CSoftwareDriver.o CSoftwareTexture.o CTRFlat.o CTRFlatWire.o CTRGouraud.o CTRGouraudWire.o CTRNormalMap.o CTRStencilShadow.o CTRTextureFlat.o CTRTextureFlatWire.o CTRTextureGouraud.o CTRTextureGouraudAdd.o CTRTextureGouraudNoZ.o CTRTextureGouraudWire.o CZBuffer.o CTRTextureGouraudVertexAlpha2.o CTRTextureGouraudNoZ2.o CTRTextureLightMap2_M2.o CTRTextureLightMap2_M4.o CTRTextureLightMap2_M1.o CSoftwareDriver2.o CSoftwareTexture2.o CTRTextureGouraud2.o CTRGouraud2.o CTRGouraudAlpha2.o CTRGouraudAlphaNoZ2.o CTRTextureDetailMap2.o CTRTextureGouraudAdd2.o CTRTextureGouraudAddNoZ2.o CTRTextureWire2.o CTRTextureLightMap2_Add.o CTRTextureLightMapGouraud2_M4.o IBurningShader.o CTRTextureBlend.o CTRTextureGouraudAlpha.o CTRTextureGouraudAlphaNoZ.o CDepthBuffer.o CBurningShader_Raster_Reference.o +-IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o CAttributes.o lzma/LzmaDec.o ++IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o CAttributes.o + IRROTHEROBJ = CIrrDeviceSDL.o CIrrDeviceLinux.o CIrrDeviceConsole.o CIrrDeviceStub.o CIrrDeviceWin32.o CIrrDeviceFB.o CLogger.o COSOperator.o Irrlicht.o os.o + IRRGUIOBJ = CGUIButton.o CGUICheckBox.o CGUIComboBox.o CGUIContextMenu.o CGUIEditBox.o CGUIEnvironment.o CGUIFileOpenDialog.o CGUIFont.o CGUIImage.o CGUIInOutFader.o CGUIListBox.o CGUIMenu.o CGUIMeshViewer.o CGUIMessageBox.o CGUIModalScreen.o CGUIScrollBar.o CGUISpinBox.o CGUISkin.o CGUIStaticText.o CGUITabControl.o CGUITable.o CGUIToolBar.o CGUIWindow.o CGUIColorSelectDialog.o CDefaultGUIElementFactory.o CGUISpriteBank.o CGUIImageList.o CGUITreeView.o + ZLIBOBJ = zlib/adler32.o zlib/compress.o zlib/crc32.o zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o zlib/uncompr.o zlib/zutil.o +@@ -56,14 +56,14 @@ BZIP2OBJ = bzip2/blocksort.o bzip2/huffman.o bzip2/crctable.o bzip2/randtable.o + EXTRAOBJ = + LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \ + $(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \ +- $(IRRGUIOBJ) $(ZLIBOBJ) $(JPEGLIBOBJ) $(LIBPNGOBJ) $(LIBAESGM) \ +- $(BZIP2OBJ) $(EXTRAOBJ) ++ $(IRRGUIOBJ) $(LIBAESGM) \ ++ $(EXTRAOBJ) + + ############### + #Compiler flags +-CXXINCS = -I../../include -Izlib -Ijpeglib -Ilibpng ++CXXINCS = -I../../include # -Izlib -Ijpeglib -Ilibpng + CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1 +-CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing ++CXXFLAGS += -Wall -pipe -fno-exceptions -fstrict-aliasing + ifndef NDEBUG + CXXFLAGS += -g -D_DEBUG + else +@@ -88,7 +88,7 @@ STATIC_LIB = libIrrlicht.a + LIB_PATH = ../../lib/$(SYSTEM) + INSTALL_DIR = /usr/local/lib + sharedlib install: SHARED_LIB = libIrrlicht.so +-sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm ++staticlib sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lX11 -lz -lpng -ljpeg -lbz2 + staticlib sharedlib: CXXINCS += -I/usr/X11R6/include + + #OSX specific options +@@ -153,7 +153,8 @@ install install_osx: + $(RM) -r $(INSTALL_DIR)/../include/irrlicht + mkdir -p $(INSTALL_DIR)/../include/irrlicht + cp ../../include/*.h $(INSTALL_DIR)/../include/irrlicht/ +- cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR) ++ cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR) || true ++ cp $(LIB_PATH)/$(STATIC_LIB) $(INSTALL_DIR) || true + cd $(INSTALL_DIR) && ln -s -f $(SHARED_FULLNAME) $(SONAME) + cd $(INSTALL_DIR) && ln -s -f $(SONAME) $(SHARED_LIB) + # ldconfig -n $(INSTALL_DIR) +-- +2.18.0 + -- cgit v1.2.3