]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Make zlib compression somewhat optional
authorMichael Schroeder <mls@suse.de>
Thu, 23 Feb 2017 16:30:29 +0000 (17:30 +0100)
committerMichael Schroeder <mls@suse.de>
Thu, 23 Feb 2017 16:30:29 +0000 (17:30 +0100)
Also do not search for expat if it is not needed.

CMakeLists.txt
ext/solv_xfopen.c
src/solvversion.h.in

index 838f9d0baa0b5704f9dd82f68d3ccec87375c738..615538b237614fdc032bb414fb530c1453fdeefc 100644 (file)
@@ -153,16 +153,24 @@ IF (${have_system} STRGREATER xx)
     MESSAGE (FATAL_ERROR "Can only compile for one system type.")
 ENDIF (${have_system} STRGREATER xx)
 
+SET (ENABLE_ZLIB_COMPRESSION ON)
 IF (ENABLE_ARCHREPO)
 SET (ENABLE_LZMA_COMPRESSION ON)
 ENDIF (ENABLE_ARCHREPO)
 
+IF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO)
 FIND_PACKAGE (EXPAT REQUIRED)
 INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS})
+ENDIF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO)
+
+IF (ENABLE_ZLIB_COMPRESSION)
 FIND_PACKAGE (ZLIB REQUIRED)
+ENDIF (ENABLE_ZLIB_COMPRESSION)
+
 IF (ENABLE_LZMA_COMPRESSION)
 FIND_PACKAGE (LZMA REQUIRED)
 ENDIF (ENABLE_LZMA_COMPRESSION)
+
 IF (ENABLE_BZIP2_COMPRESSION)
 FIND_PACKAGE (BZip2 REQUIRED)
 ENDIF (ENABLE_BZIP2_COMPRESSION)
@@ -271,7 +279,8 @@ FOREACH (VAR
   ENABLE_RPMDB ENABLE_RPMPKG ENABLE_PUBKEY ENABLE_RPMMD ENABLE_RPMDB_BYRPMHEADER
   ENABLE_SUSEREPO ENABLE_COMPS
   ENABLE_HELIXREPO ENABLE_MDKREPO ENABLE_ARCHREPO ENABLE_DEBIAN ENABLE_HAIKU
-  ENABLE_LZMA_COMPRESSION ENABLE_BZIP2_COMPRESSION ENABLE_PGPVRFY ENABLE_APPDATA)
+  ENABLE_ZLIB_COMPRESSION ENABLE_LZMA_COMPRESSION ENABLE_BZIP2_COMPRESSION
+  ENABLE_PGPVRFY ENABLE_APPDATA)
   IF(${VAR})
     ADD_DEFINITIONS (-D${VAR}=1)
     SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR})
@@ -355,7 +364,14 @@ set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O3")
 set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -O3")
 set (CMAKE_C_FLAGS_DEBUG     "${CMAKE_C_FLAGS} -g3 -O0")
 
-SET (SYSTEM_LIBRARIES ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
+# set system libraries
+SET (SYSTEM_LIBRARIES "")
+IF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO)
+SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${EXPAT_LIBRARY})
+ENDIF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO)
+IF (ENABLE_ZLIB_COMPRESSION)
+SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${ZLIB_LIBRARY})
+ENDIF (ENABLE_ZLIB_COMPRESSION)
 IF (ENABLE_LZMA_COMPRESSION)
 SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${LZMA_LIBRARY})
 ENDIF (ENABLE_LZMA_COMPRESSION)
index b0421bfafdffd379f0a42353aec70502d04ab022..c186d9dcb62482f848f6d8f6d25723902d8034a8 100644 (file)
@@ -10,7 +10,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <zlib.h>
 #include <fcntl.h>
 
 #include "solv_xfopen.h"
@@ -66,8 +65,12 @@ static FILE *cookieopen(void *cookie, const char *mode,
 }
 
 
+#ifdef ENABLE_ZLIB_COMPRESSION
+
 /* gzip compression */
 
+#include <zlib.h>
+
 static ssize_t cookie_gzread(void *cookie, char *buf, size_t nbytes)
 {
   return gzread((gzFile)cookie, buf, nbytes);
@@ -95,12 +98,15 @@ static inline FILE *mygzfdopen(int fd, const char *mode)
   return cookieopen(gzf, mode, cookie_gzread, cookie_gzwrite, cookie_gzclose);
 }
 
-#ifdef ENABLE_BZIP2_COMPRESSION
+#endif
 
-#include <bzlib.h>
+
+#ifdef ENABLE_BZIP2_COMPRESSION
 
 /* bzip2 compression */
 
+#include <bzlib.h>
+
 static ssize_t cookie_bzread(void *cookie, char *buf, size_t nbytes)
 {
   return BZ2_bzread((BZFILE *)cookie, buf, nbytes);
@@ -134,10 +140,10 @@ static inline FILE *mybzfdopen(int fd, const char *mode)
 
 #ifdef ENABLE_LZMA_COMPRESSION
 
-#include <lzma.h>
-
 /* lzma code written by me in 2008 for rpm's rpmio.c */
 
+#include <lzma.h>
+
 typedef struct lzfile {
   unsigned char buf[1 << 15];
   lzma_stream strm;
@@ -338,8 +344,13 @@ solv_xfopen(const char *fn, const char *mode)
   if (!mode)
     mode = "r";
   suf = strrchr(fn, '.');
+#ifdef ENABLE_ZLIB_COMPRESSION
   if (suf && !strcmp(suf, ".gz"))
     return mygzfopen(fn, mode);
+#else
+  if (suf && !strcmp(suf, ".gz"))
+    return 0;
+#endif
 #ifdef ENABLE_LZMA_COMPRESSION
   if (suf && !strcmp(suf, ".xz"))
     return myxzfopen(fn, mode);
@@ -384,8 +395,13 @@ solv_xfopen_fd(const char *fn, int fd, const char *mode)
       else
        mode = simplemode = "r";
     }
+#ifdef ENABLE_ZLIB_COMPRESSION
   if (suf && !strcmp(suf, ".gz"))
     return mygzfdopen(fd, simplemode);
+#else
+    return 0;
+  if (suf && !strcmp(suf, ".gz"))
+#endif
 #ifdef ENABLE_LZMA_COMPRESSION
   if (suf && !strcmp(suf, ".xz"))
     return myxzfdopen(fd, simplemode);
@@ -413,8 +429,12 @@ solv_xfopen_iscompressed(const char *fn)
   const char *suf = fn ? strrchr(fn, '.') : 0;
   if (!suf)
     return 0;
+#ifdef ENABLE_ZLIB_COMPRESSION
   if (!strcmp(suf, ".gz"))
     return 1;
+#else
+    return -1;
+#endif
   if (!strcmp(suf, ".xz") || !strcmp(suf, ".lzma"))
 #ifdef ENABLE_LZMA_COMPRESSION
     return 1;
index 9f59d75c155ffa3a4dfcdda023189f4148104eec..7d107f96bbaeaf33bb400a12f4aa8e2d34423698 100644 (file)
@@ -38,9 +38,9 @@ extern int solv_version_patch;
 #cmakedefine LIBSOLVEXT_FEATURE_HELIXREPO
 #cmakedefine LIBSOLVEXT_FEATURE_DEBIAN
 #cmakedefine LIBSOLVEXT_FEATURE_ARCHREPO
-#cmakedefine LIBSOLVEXT_FEATURE_CUDFREPO
 #cmakedefine LIBSOLVEXT_FEATURE_HAIKU
 #cmakedefine LIBSOLVEXT_FEATURE_APPDATA
+#cmakedefine LIBSOLVEXT_FEATURE_ZLIB_COMPRESSION
 #cmakedefine LIBSOLVEXT_FEATURE_LZMA_COMPRESSION
 #cmakedefine LIBSOLVEXT_FEATURE_BZIP2_COMPRESSION