diff options
Diffstat (limited to 'gnu/packages/patches')
17 files changed, 296 insertions, 667 deletions
diff --git a/gnu/packages/patches/appstream-glib-2020.patch b/gnu/packages/patches/appstream-glib-2020.patch deleted file mode 100644 index ab8a4bbdee..0000000000 --- a/gnu/packages/patches/appstream-glib-2020.patch +++ /dev/null @@ -1,31 +0,0 @@ -2020 is no longer the future. - -Taken from upstream: -https://github.com/hughsie/appstream-glib/commit/953c8e529d7291e60a95e580967ed79ce2c9ccf0 - -diff --git a/data/tests/broken.appdata.xml b/data/tests/broken.appdata.xml -index f7a5386e..cf80f5b4 100644 ---- a/data/tests/broken.appdata.xml -+++ b/data/tests/broken.appdata.xml -@@ -40,7 +40,7 @@ - <p>This is a duplicate release on the same day!</p> - </description> - </release> -- <release date="2020-01-01" version="0.6.2"> -+ <release date="2050-01-01" version="0.6.2"> - <description> - <p>This is a release in the future!</p> - </description> -diff --git a/libappstream-glib/as-app-validate.c b/libappstream-glib/as-app-validate.c -index c1103ace..f50e4e41 100644 ---- a/libappstream-glib/as-app-validate.c -+++ b/libappstream-glib/as-app-validate.c -@@ -864,7 +864,7 @@ as_app_validate_release (AsApp *app, - AS_PROBLEM_KIND_ATTRIBUTE_MISSING, - "<release> has no timestamp"); - } -- if (timestamp > 20120101 && timestamp < 20251231) { -+ if (timestamp > 20120101 && timestamp < 20351231) { - ai_app_validate_add (helper, - AS_PROBLEM_KIND_ATTRIBUTE_INVALID, - "<release> timestamp should be a UNIX time"); diff --git a/gnu/packages/patches/ceph-boost-compat.patch b/gnu/packages/patches/ceph-boost-compat.patch deleted file mode 100644 index b3df659d6b..0000000000 --- a/gnu/packages/patches/ceph-boost-compat.patch +++ /dev/null @@ -1,81 +0,0 @@ -Fix compatibility with Boost 1.70. - -Adapted for 14.2.5 from these upstream commits: -https://github.com/ceph/ceph/commit/064f142746ae97f54865069cdacf5aae2b1b14f6 -https://github.com/ceph/ceph/commit/f1651b8c509d60787d10c4115e29fecfd2da237c - -diff --git a/src/rgw/rgw_asio_frontend.cc b/src/rgw/rgw_asio_frontend.cc ---- a/src/rgw/rgw_asio_frontend.cc -+++ b/src/rgw/rgw_asio_frontend.cc -@@ -83,7 +83,8 @@ - using SharedMutex = ceph::async::SharedMutex<boost::asio::io_context::executor_type>; - - template <typename Stream> --void handle_connection(RGWProcessEnv& env, Stream& stream, -+void handle_connection(boost::asio::io_context& context, -+ RGWProcessEnv& env, Stream& stream, - parse_buffer& buffer, bool is_ssl, - SharedMutex& pause_mutex, - rgw::dmclock::Scheduler *scheduler, -@@ -160,7 +161,7 @@ - rgw::io::add_conlen_controlling( - &real_client)))); - RGWRestfulIO client(cct, &real_client_io); -- auto y = optional_yield{socket.get_io_context(), yield}; -+ auto y = optional_yield{context, yield}; - process_request(env.store, env.rest, &req, env.uri_prefix, - *env.auth_registry, &client, env.olog, y, scheduler); - } -@@ -604,7 +605,7 @@ - return; - } - buffer->consume(bytes); -- handle_connection(env, stream, *buffer, true, pause_mutex, -+ handle_connection(context, env, stream, *buffer, true, pause_mutex, - scheduler.get(), ec, yield); - if (!ec) { - // ssl shutdown (ignoring errors) -@@ -622,7 +623,7 @@ - auto c = connections.add(conn); - auto buffer = std::make_unique<parse_buffer>(); - boost::system::error_code ec; -- handle_connection(env, s, *buffer, false, pause_mutex, -+ handle_connection(context, env, s, *buffer, false, pause_mutex, - scheduler.get(), ec, yield); - s.shutdown(tcp::socket::shutdown_both, ec); - }); -diff --git a/src/rgw/rgw_dmclock_async_scheduler.h b/src/rgw/rgw_dmclock_async_scheduler.h ---- a/src/rgw/rgw_dmclock_async_scheduler.h -+++ b/src/rgw/rgw_dmclock_async_scheduler.h -@@ -82,7 +82,12 @@ class AsyncScheduler : public md_config_obs_t, public Scheduler { - using Completion = async::Completion<Signature, async::AsBase<Request>>; - - using Clock = ceph::coarse_real_clock; -+#if BOOST_VERSION < 107000 - using Timer = boost::asio::basic_waitable_timer<Clock>; -+#else -+ using Timer = boost::asio::basic_waitable_timer<Clock, -+ boost::asio::wait_traits<Clock>, executor_type>; -+#endif - Timer timer; //< timer for the next scheduled request - - CephContext *const cct; -diff --git a/src/rgw/rgw_reshard.h b/src/rgw/rgw_reshard.h ---- a/src/rgw/rgw_reshard.h -+++ b/src/rgw/rgw_reshard.h -@@ -183,7 +183,14 @@ class RGWReshardWait { - ceph::condition_variable cond; - - struct Waiter : boost::intrusive::list_base_hook<> { -- boost::asio::basic_waitable_timer<Clock> timer; -+#if BOOST_VERSION < 107000 -+ using Timer = boost::asio::basic_waitable_timer<Clock>; -+#else -+ using Executor = boost::asio::io_context::executor_type; -+ using Timer = boost::asio::basic_waitable_timer<Clock, -+ boost::asio::wait_traits<Clock>, Executor>; -+#endif -+ Timer timer; - explicit Waiter(boost::asio::io_context& ioc) : timer(ioc) {} - }; - boost::intrusive::list<Waiter> waiters; diff --git a/gnu/packages/patches/ceph-volume-respect-PATH.patch b/gnu/packages/patches/ceph-volume-respect-PATH.patch deleted file mode 100644 index 08a9a15ddd..0000000000 --- a/gnu/packages/patches/ceph-volume-respect-PATH.patch +++ /dev/null @@ -1,22 +0,0 @@ -Look for required tools in $PATH instead of just a handful locations. - -diff --git a/src/ceph-volume/ceph_volume/util/system.py b/src/ceph-volume/ceph_volume/util/system.py -index b637f023a4..14516e1c65 100644 ---- a/src/ceph-volume/ceph_volume/util/system.py -+++ b/src/ceph-volume/ceph_volume/util/system.py -@@ -33,14 +33,7 @@ def generate_uuid(): - - def which(executable): - """find the location of an executable""" -- locations = ( -- '/usr/local/bin', -- '/bin', -- '/usr/bin', -- '/usr/local/sbin', -- '/usr/sbin', -- '/sbin', -- ) -+ locations = os.getenv('PATH').split(':') - - for location in locations: - executable_path = os.path.join(location, executable) diff --git a/gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch b/gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch deleted file mode 100644 index 4250106a19..0000000000 --- a/gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch +++ /dev/null @@ -1,89 +0,0 @@ -Add QMap include to fix building under Qt 5.13 - -This combines several patches which all add the same missing include: -- e13ab06f65a4e8b6259bccda1401abb9c1c9fdca -- 546ede9ef712bb1b156a55ce30df81c3203dde61 -- 08fb06b63a78888e6703de6ac1a4fd6a0e2791eb -- bef6784596bf0b41287ebad81f138e1c8c2a6be2 - -Include is no longer added transitively. ---- - ---- a/plugins/betternotify/notify.h -+++ b/plugins/betternotify/notify.h -@@ -23,6 +23,7 @@ - #ifndef NOTIFY_H - #define NOTIFY_H - -+#include <QMap> - #include <QQueue> - #include <QPoint> - #include <QPointer> ---- a/plugins/untiny/untiny.h -+++ b/plugins/untiny/untiny.h -@@ -27,6 +27,7 @@ - - #include "plugin.h" - -+#include <QMap> - #include <QQueue> - #include <QUrl> - #include <QPointer> ---- a/plugins/uploaders/flickr/flickr.h -+++ b/plugins/uploaders/flickr/flickr.h -@@ -26,6 +26,8 @@ - - #include "uploader.h" - -+#include <QMap> -+ - /** - @author Andrey Esin \<gmlastik@gmail.com\> - */ -diff --git a/plugins/uploaders/imageshack/imageshack.h b/plugins/uploaders/imageshack/imageshack.h -index d9ddc88..63d0e3f 100644 ---- a/plugins/uploaders/imageshack/imageshack.h -+++ b/plugins/uploaders/imageshack/imageshack.h -@@ -26,6 +26,8 @@ - - #include "uploader.h" - -+#include <QMap> -+ - /** - @author Mehrdad Momeny \<mehrdad.momeny@gmail.com\> - */ ---- a/plugins/uploaders/mobypicture/mobypicture.h -+++ b/plugins/uploaders/mobypicture/mobypicture.h -@@ -26,6 +26,8 @@ - - #include "uploader.h" - -+#include <QMap> -+ - class KJob; - - class Mobypicture : public Choqok::Uploader ---- a/plugins/uploaders/posterous/posterous.h -+++ b/plugins/uploaders/posterous/posterous.h -@@ -26,6 +26,8 @@ - - #include "uploader.h" - -+#include <QMap> -+ - class KJob; - - class Posterous : public Choqok::Uploader ---- a/plugins/uploaders/twitgoo/twitgoo.h -+++ b/plugins/uploaders/twitgoo/twitgoo.h -@@ -26,6 +26,8 @@ - - #include "uploader.h" - -+#include <QMap> -+ - class KJob; - - class Twitgoo : public Choqok::Uploader --- diff --git a/gnu/packages/patches/clang-9.0-libc-search-path.patch b/gnu/packages/patches/clang-9.0-libc-search-path.patch new file mode 100644 index 0000000000..be34344842 --- /dev/null +++ b/gnu/packages/patches/clang-9.0-libc-search-path.patch @@ -0,0 +1,83 @@ +Clang attempts to guess file names based on the OS and distro (yes!), +but unfortunately, that doesn't work for us. + +This patch makes it easy to insert libc's $libdir so that Clang passes the +correct absolute file name of crt1.o etc. to 'ld'. It also disables all +the distro-specific stuff and removes the hard-coded FHS directory names +to make sure Clang also works on non-GuixSD systems. + +diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp +--- a/lib/Driver/ToolChains/Linux.cpp ++++ b/lib/Driver/ToolChains/Linux.cpp +@@ -240,6 +240,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + .str()); + } + ++// Comment out the distro-specific tweaks so that they don't bite when ++// using Guix on a foreign distro. ++#if 0 + Distro Distro(D.getVFS()); + + if (Distro.IsAlpineLinux() || Triple.isAndroid()) { +@@ -306,6 +309,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + + if (IsAndroid || Distro.IsOpenSUSE()) + ExtraOpts.push_back("--enable-new-dtags"); ++#endif + + // The selection of paths to try here is designed to match the patterns which + // the GCC driver itself uses, as this is part of the GCC-compatible driver. +@@ -363,7 +367,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + // the cross. Note that GCC does include some of these directories in some + // configurations but this seems somewhere between questionable and simply + // a bug. +- if (StringRef(LibPath).startswith(SysRoot)) { ++ if (0) { + addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths); + addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths); + } +@@ -382,6 +386,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths); + addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths); + ++// This requires the commented distro tweaks above. ++#if 0 + if (IsAndroid) { + // Android sysroots contain a library directory for each supported OS + // version as well as some unversioned libraries in the usual multiarch +@@ -410,10 +416,15 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + addPathIfExists(D, SysRoot + "/" + OSLibDir + "/" + ABIName, Paths); + addPathIfExists(D, SysRoot + "/usr/" + OSLibDir + "/" + ABIName, Paths); + } ++#endif + + // Try walking via the GCC triple path in case of biarch or multiarch GCC + // installations with strange symlinks. + if (GCCInstallation.isValid()) { ++ ++// The following code would end up adding things like ++// "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path. ++#if 0 + addPathIfExists(D, + SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() + + "/../../" + OSLibDir, +@@ -426,6 +437,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + BiarchSibling.gccSuffix(), + Paths); + } ++#endif + + // See comments above on the multilib variant for details of why this is + // included even from outside the sysroot. +@@ -450,8 +462,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + if (StringRef(D.Dir).startswith(SysRoot)) + addPathIfExists(D, D.Dir + "/../lib", Paths); + +- addPathIfExists(D, SysRoot + "/lib", Paths); +- addPathIfExists(D, SysRoot + "/usr/lib", Paths); ++ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o, ++ // and friends can be found. ++ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths); + } + + ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const { diff --git a/gnu/packages/patches/containerd-test-with-go1.13.patch b/gnu/packages/patches/containerd-test-with-go1.13.patch new file mode 100644 index 0000000000..964adee9e6 --- /dev/null +++ b/gnu/packages/patches/containerd-test-with-go1.13.patch @@ -0,0 +1,21 @@ +Compatibility fix for go 1.13, flag.Parse() shouldn't be called during +package initialization. +https://golang.org/doc/go1.13#testing +--- a/client_test.go 2020-02-12 14:50:28.991245371 -0500 ++++ b/client_test.go 2020-02-12 15:12:37.383523980 -0500 +@@ -49,7 +49,6 @@ + flag.StringVar(&address, "address", defaultAddress, "The address to the containerd socket for use in the tests") + flag.BoolVar(&noDaemon, "no-daemon", false, "Do not start a dedicated daemon for the tests") + flag.BoolVar(&noCriu, "no-criu", false, "Do not run the checkpoint tests") +- flag.Parse() + } + + func testContext() (context.Context, context.CancelFunc) { +@@ -59,6 +58,7 @@ + } + + func TestMain(m *testing.M) { ++ flag.Parse() + if testing.Short() { + os.Exit(m.Run()) + } diff --git a/gnu/packages/patches/desmume-gcc6-fixes.patch b/gnu/packages/patches/desmume-gcc6-fixes.patch new file mode 100644 index 0000000000..6eb9576f64 --- /dev/null +++ b/gnu/packages/patches/desmume-gcc6-fixes.patch @@ -0,0 +1,59 @@ +From: zeromus +Origin: upstream, https://sourceforge.net/p/desmume/code/5514, https://sourceforge.net/p/desmume/code/5517, https://sourceforge.net/p/desmume/code/5430 +Subject: fix GCC6 issues +Bug: https://sourceforge.net/p/desmume/bugs/1570/ +Bug-Debian: http://bugs.debian.org/811691 + +Index: desmume/src/MMU_timing.h +=================================================================== +--- desmume/src/MMU_timing.h (revision 5513) ++++ desmume/src/MMU_timing.h (revision 5517) +@@ -155,8 +155,8 @@ + enum { ASSOCIATIVITY = 1 << ASSOCIATIVESHIFT }; + enum { BLOCKSIZE = 1 << BLOCKSIZESHIFT }; + enum { TAGSHIFT = SIZESHIFT - ASSOCIATIVESHIFT }; +- enum { TAGMASK = (u32)(~0 << TAGSHIFT) }; +- enum { BLOCKMASK = ((u32)~0 >> (32 - TAGSHIFT)) & (u32)(~0 << BLOCKSIZESHIFT) }; ++ enum { TAGMASK = (u32)(~0U << TAGSHIFT) }; ++ enum { BLOCKMASK = ((u32)~0U >> (32 - TAGSHIFT)) & (u32)(~0U << BLOCKSIZESHIFT) }; + enum { WORDSIZE = sizeof(u32) }; + enum { WORDSPERBLOCK = (1 << BLOCKSIZESHIFT) / WORDSIZE }; + enum { DATAPERWORD = WORDSIZE * ASSOCIATIVITY }; +Index: desmume/src/ctrlssdl.cpp +=================================================================== +--- desmume/src/ctrlssdl.cpp (revision 5513) ++++ desmume/src/ctrlssdl.cpp (revision 5517) +@@ -200,7 +200,7 @@ + break; + case SDL_JOYAXISMOTION: + /* Dead zone of 50% */ +- if( (abs(event.jaxis.value) >> 14) != 0 ) ++ if( ((u32)abs(event.jaxis.value) >> 14) != 0 ) + { + key = ((event.jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event.jaxis.axis & 127) << 1); + if (event.jaxis.value > 0) { +@@ -370,7 +370,7 @@ + Note: button constants have a 1bit offset. */ + case SDL_JOYAXISMOTION: + key_code = ((event->jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event->jaxis.axis & 127) << 1); +- if( (abs(event->jaxis.value) >> 14) != 0 ) ++ if( ((u32)abs(event->jaxis.value) >> 14) != 0 ) + { + if (event->jaxis.value > 0) + key_code |= 1; +Index: desmume/src/wifi.cpp +=================================================================== +--- desmume/src/wifi.cpp (revision 5429) ++++ desmume/src/wifi.cpp (revision 5430) +@@ -320,9 +320,9 @@ + + #if (WIFI_LOGGING_LEVEL >= 1) + #if WIFI_LOG_USE_LOGC +- #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: "__VA_ARGS__); ++ #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: " __VA_ARGS__); + #else +- #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: "__VA_ARGS__); ++ #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: " __VA_ARGS__); + #endif + #else + #define WIFI_LOG(level, ...) {} diff --git a/gnu/packages/patches/desmume-gcc7-fixes.patch b/gnu/packages/patches/desmume-gcc7-fixes.patch new file mode 100644 index 0000000000..a4934ff6e6 --- /dev/null +++ b/gnu/packages/patches/desmume-gcc7-fixes.patch @@ -0,0 +1,18 @@ +From e1f7039f1b06add4fb75b2f8774000b8f05574af Mon Sep 17 00:00:00 2001 +From: rogerman <rogerman@users.sf.net> +Date: Mon, 17 Aug 2015 21:15:04 +0000 +Subject: Fix bug with libfat string handling. + +diff --git a/src/utils/libfat/directory.cpp b/src/utils/libfat/directory.cpp +index 765d7ae5..b6d7f01f 100644 +--- a/src/utils/libfat/directory.cpp ++++ b/src/utils/libfat/directory.cpp +@@ -139,7 +139,7 @@ static size_t _FAT_directory_mbstoucs2 (ucs2_t* dst, const char* src, size_t len + int bytes; + size_t count = 0; + +- while (count < len-1 && src != '\0') { ++ while (count < len-1 && *src != '\0') { + bytes = mbrtowc (&tempChar, src, MB_CUR_MAX, &ps); + if (bytes > 0) { + *dst = (ucs2_t)tempChar; diff --git a/gnu/packages/patches/elixir-path-length.patch b/gnu/packages/patches/elixir-path-length.patch index aa8bf38829..ab99595cff 100644 --- a/gnu/packages/patches/elixir-path-length.patch +++ b/gnu/packages/patches/elixir-path-length.patch @@ -5,11 +5,11 @@ after the substitution is made. --- a/Makefile +++ b/Makefile -@@ -213,6 +213,7 @@ - TEST_ERLS = $(addprefix $(TEST_EBIN)/, $(addsuffix .beam, $(basename $(notdir $(wildcard $(TEST_ERL)/*.erl))))) +@@ -265,6 +265,7 @@ format: compile + $(call FORMAT) test_formatted: compile -+ bin/elixir bin/mix format lib/mix/lib/mix/scm/git.ex - bin/elixir bin/mix format --check-formatted ++ $(call FORMAT,lib/mix/lib/mix/scm/git.ex) + $(call FORMAT,--check-formatted) test_erlang: compile $(TEST_ERLS) diff --git a/gnu/packages/patches/libgit2-avoid-python.patch b/gnu/packages/patches/libgit2-avoid-python.patch deleted file mode 100644 index b2e5141563..0000000000 --- a/gnu/packages/patches/libgit2-avoid-python.patch +++ /dev/null @@ -1,322 +0,0 @@ -This provides a Guile reimplementation of clar's "generate.py". -It makes it possible for us to remove Python from libgit2's build-time -dependencies. -libgit2 is used in order to fetch a lot of sources for guix packages. -Both Python2 and Python3 builds acted up in the past. -Hence this patch which makes the number of libgit2 dependencies very -small. -The reimplementation tries to keep as close as possible to the original -in both structure and runtime effect. Some things are thus overly -convoluted just to make them the same as in the original. - -Both implementations basically do: - -grep -r 'test_.*__.*' . > clar.suite - -It is important that the directory traversal order of the original and -the reimplementation stay the same. - -diff -ruN orig/libgit2-0.27.7/tests/CMakeLists.txt libgit2-0.27.7/tests/CMakeLists.txt ---- orig/libgit2-0.27.7/tests/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 -+++ libgit2-0.27.7/tests/CMakeLists.txt 2019-03-04 11:13:06.640118979 +0100 -@@ -1,10 +1,3 @@ --FIND_PACKAGE(PythonInterp) -- --IF(NOT PYTHONINTERP_FOUND) -- MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. " -- "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests") --ENDIF() -- - SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/") - SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}") - ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\") -@@ -21,7 +14,7 @@ - - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite -- COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf . -+ COMMAND guile generate.scm -o "${CMAKE_CURRENT_BINARY_DIR}" -f -x online -x stress -x perf . - DEPENDS ${SRC_TEST} - WORKING_DIRECTORY ${CLAR_PATH} - ) -diff -ruN orig/libgit2-0.27.7/tests/generate.scm libgit2-0.27.7/tests/generate.scm ---- orig/libgit2-0.27.7/tests/generate.scm 1970-01-01 01:00:00.000000000 +0100 -+++ libgit2-0.27.7/tests/generate.scm 2019-03-04 12:18:00.688040975 +0100 -@@ -0,0 +1,277 @@ -+;; -*- geiser-scheme-implementation: guile -*- -+ -+;;; Implementation: Danny Milosavljevic <dannym@scratchpost.org> -+;;; Based on: Implementation in Python by Vicent Marti. -+;;; License: ISC, like the original generate.py in clar. -+ -+(use-modules (ice-9 ftw)) -+(use-modules (ice-9 regex)) -+(use-modules (ice-9 getopt-long)) -+(use-modules (ice-9 rdelim)) -+(use-modules (ice-9 match)) -+(use-modules (ice-9 textual-ports)) -+(use-modules (srfi srfi-1)) -+ -+(define (render-callback cb) -+ (if cb -+ (string-append " { \"" (assoc-ref cb "short-name") "\", &" -+ (assoc-ref cb "symbol") " }") -+ " { NULL, NULL }")) -+ -+(define (replace needle replacement haystack) -+ "Replace all occurences of NEEDLE in HAYSTACK by REPLACEMENT. -+NEEDLE is a regular expression." -+ (regexp-substitute/global #f needle haystack 'pre replacement 'post)) -+ -+(define (skip-comments* text) -+ (call-with-input-string -+ text -+ (lambda (port) -+ (let loop ((result '()) -+ (section #f)) -+ (define (consume-char) -+ (cons (read-char port) result)) -+ (define (skip-char) -+ (read-char port) -+ result) -+ (match section -+ (#f -+ (match (peek-char port) -+ (#\/ (loop (consume-char) 'almost-in-block-comment)) -+ (#\" (loop (consume-char) 'in-string-literal)) -+ (#\' (loop (consume-char) 'in-character-literal)) -+ ((? eof-object?) result) -+ (_ (loop (consume-char) section)))) -+ ('almost-in-block-comment -+ (match (peek-char port) -+ (#\* (loop (consume-char) 'in-block-comment)) -+ (#\/ (loop (consume-char) 'in-line-comment)) -+ ((? eof-object?) result) -+ (_ (loop (consume-char) #f)))) -+ ('in-line-comment -+ (match (peek-char port) -+ (#\newline (loop (consume-char) #f)) -+ ((? eof-object?) result) -+ (_ (loop (skip-char) section)))) -+ ('in-block-comment -+ (match (peek-char port) -+ (#\* (loop (skip-char) 'almost-out-of-block-comment)) -+ ((? eof-object?) result) -+ (_ (loop (skip-char) section)))) -+ ('almost-out-of-block-comment -+ (match (peek-char port) -+ (#\/ (loop (cons (read-char port) (cons #\* result)) #f)) -+ (#\* (loop (skip-char) 'almost-out-of-block-comment)) -+ ((? eof-object?) result) -+ (_ (loop (skip-char) 'in-block-comment)))) -+ ('in-string-literal -+ (match (peek-char port) -+ (#\\ (loop (consume-char) 'in-string-literal-escape)) -+ (#\" (loop (consume-char) #f)) -+ ((? eof-object?) result) -+ (_ (loop (consume-char) section)))) -+ ('in-string-literal-escape -+ (match (peek-char port) -+ ((? eof-object?) result) -+ (_ (loop (consume-char) 'in-string-literal)))) -+ ('in-character-literal -+ (match (peek-char port) -+ (#\\ (loop (consume-char) 'in-character-literal-escape)) -+ (#\' (loop (consume-char) #f)) -+ ((? eof-object?) result) -+ (_ (loop (consume-char) section)))) -+ ('in-character-literal-escape -+ (match (peek-char port) -+ ((? eof-object?) result) -+ (_ (loop (consume-char) 'in-character-literal))))))))) -+ -+(define (skip-comments text) -+ (list->string (reverse (skip-comments* text)))) -+ -+(define (maybe-only items) -+ (match items -+ ((a) a) -+ (_ #f))) -+ -+(define (Module name path excludes) -+ (let* ((clean-name (replace "_" "::" name)) -+ (enabled (not (any (lambda (exclude) -+ (string-prefix? exclude clean-name)) -+ excludes)))) -+ (define (parse contents) -+ (define (cons-match match prev) -+ (cons -+ `(("declaration" . ,(match:substring match 1)) -+ ("symbol" . ,(match:substring match 2)) -+ ("short-name" . ,(match:substring match 3))) -+ prev)) -+ (let* ((contents (skip-comments contents)) -+ (entries (fold-matches (make-regexp -+ (string-append "^(void\\s+(test_" -+ name -+ "__(\\w+))\\s*\\(\\s*void\\s*\\))\\s*\\{") -+ regexp/newline) -+ contents -+ '() -+ cons-match)) -+ (entries (reverse entries)) -+ (callbacks (filter (lambda (entry) -+ (match (assoc-ref entry "short-name") -+ ("initialize" #f) -+ ("cleanup" #f) -+ (_ #t))) -+ entries))) -+ (if (> (length callbacks) 0) -+ `(("name" . ,name) -+ ("enabled" . ,(if enabled "1" "0")) -+ ("clean-name" . ,clean-name) -+ ("initialize" . ,(maybe-only (filter-map (lambda (entry) -+ (match (assoc-ref entry "short-name") -+ ("initialize" entry) -+ (_ #f))) -+ entries))) -+ ("cleanup" . ,(maybe-only (filter-map (lambda (entry) -+ (match (assoc-ref entry "short-name") -+ ("cleanup" entry) -+ (_ #f))) -+ entries))) -+ ("callbacks" . ,callbacks)) -+ #f))) -+ -+ (define (refresh path) -+ (and (file-exists? path) -+ (parse (call-with-input-file path get-string-all)))) -+ (refresh path))) -+ -+(define (generate-TestSuite path output excludes) -+ (define (load) -+ (define enter? (const #t)) -+ (define (leaf file stat result) -+ (let* ((module-root (string-drop (dirname file) -+ (string-length path))) -+ (module-root (filter-map (match-lambda -+ ("" #f) -+ (a a)) -+ (string-split module-root #\/)))) -+ (define (make-module path) -+ (let* ((name (string-join (append module-root (list (string-drop-right (basename path) (string-length ".c")))) "_")) -+ (name (replace "-" "_" name))) -+ (Module name path excludes))) -+ (if (string-suffix? ".c" file) -+ (let ((module (make-module file))) -+ (if module -+ (cons module result) -+ result)) -+ result))) -+ (define (down dir stat result) -+ result) -+ (define (up file state result) -+ result) -+ (define skip (const #f)) -+ (file-system-fold enter? leaf down up skip error '() path)) -+ -+ (define (CallbacksTemplate module) -+ (string-append "static const struct clar_func _clar_cb_" -+ (assoc-ref module "name") "[] = {\n" -+ (string-join (map render-callback -+ (assoc-ref module "callbacks")) -+ ",\n") -+ "\n};\n")) -+ -+ (define (DeclarationTemplate module) -+ (string-append (string-join (map (lambda (cb) -+ (string-append "extern " -+ (assoc-ref cb "declaration") -+ ";")) -+ (assoc-ref module "callbacks")) -+ "\n") -+ "\n" -+ (if (assoc-ref module "initialize") -+ (string-append "extern " (assoc-ref (assoc-ref module "initialize") "declaration") ";\n") -+ "") -+ (if (assoc-ref module "cleanup") -+ (string-append "extern " (assoc-ref (assoc-ref module "cleanup") "declaration") ";\n") -+ ""))) -+ -+ (define (InfoTemplate module) -+ (string-append " -+ { -+ \"" (assoc-ref module "clean-name") "\", -+ " (render-callback (assoc-ref module "initialize")) ", -+ " (render-callback (assoc-ref module "cleanup")) ", -+ _clar_cb_" (assoc-ref module "name") ", " -+ (number->string (length (assoc-ref module "callbacks"))) -+ ", " (assoc-ref module "enabled") " -+ }")) -+ -+ (define (Write data) -+ (define (name< module-a module-b) -+ (string<? (assoc-ref module-a "name") -+ (assoc-ref module-b "name"))) -+ (define modules (sort (load) name<)) -+ -+ (define (suite-count) -+ (length modules)) -+ -+ (define (callback-count) -+ (fold + 0 (map (lambda (entry) -+ (length (assoc-ref entry "callbacks"))) -+ modules))) -+ -+ (define (display-x value) -+ (display value data)) -+ -+ (for-each (compose display-x DeclarationTemplate) modules) -+ (for-each (compose display-x CallbacksTemplate) modules) -+ -+ (display-x "static struct clar_suite _clar_suites[] = {") -+ (display-x (string-join (map InfoTemplate modules) ",")) -+ (display-x "\n};\n") -+ -+ (let ((suite-count-str (number->string (suite-count))) -+ (callback-count-str (number->string (callback-count)))) -+ (display-x "static const size_t _clar_suite_count = ") -+ (display-x suite-count-str) -+ (display-x ";\n") -+ -+ (display-x "static const size_t _clar_callback_count = ") -+ (display-x callback-count-str) -+ (display-x ";\n") -+ -+ (display (string-append "Written `clar.suite` (" -+ callback-count-str -+ " tests in " -+ suite-count-str -+ " suites)")) -+ (newline)) -+ #t) -+ -+ (call-with-output-file (string-append output "/clar.suite") Write)) -+ -+;;; main -+ -+(define (main) -+ (define option-spec -+ '((force (single-char #\f) (value #f)) -+ (exclude (single-char #\x) (value #t)) -+ (output (single-char #\o) (value #t)) -+ (help (single-char #\h) (value #f)))) -+ -+ (define options (getopt-long (command-line) option-spec #:stop-at-first-non-option #t)) -+ (define args (reverse (option-ref options '() '()))) -+ (when (> (length args) 1) -+ (display "More than one path given\n") -+ (exit 1)) -+ -+ (if (< (length args) 1) -+ (set! args '("."))) -+ -+ (let* ((path (car args)) -+ (output (option-ref options 'output path)) -+ (excluded (filter-map (match-lambda -+ (('exclude . value) value) -+ (_ #f)) -+ options))) -+ (generate-TestSuite path output excluded))) -+ -+(main) diff --git a/gnu/packages/patches/mumps-shared-libseq.patch b/gnu/packages/patches/mumps-shared-libseq.patch index feafcf123b..eccf528f7a 100644 --- a/gnu/packages/patches/mumps-shared-libseq.patch +++ b/gnu/packages/patches/mumps-shared-libseq.patch @@ -17,7 +17,7 @@ Index: mumps/libseq/Makefile + $(AR) $@ mpi.o mpic.o elapse.o $(RANLIB) $@ +libmpiseq$(PLAT).so: mpi.o mpic.o elapse.o -+ $(FC) -shared $^ -Wl,-soname,libmpiseq$(PLAT)-5.1.2.so -o libmpiseq$(PLAT)-5.1.2.so -Wl,-z,defs ++ $(FC) -shared $^ -Wl,-soname,libmpiseq$(PLAT)-5.2.1.so -o libmpiseq$(PLAT)-5.2.1.so -Wl,-z,defs .f.o: - $(FC) $(OPTF) -c $*.f $(OUTF)$*.o + $(FC) $(OPTF) -fPIC -c $*.f $(OUTF)$*.o diff --git a/gnu/packages/patches/mumps-shared-mumps.patch b/gnu/packages/patches/mumps-shared-mumps.patch index 9e2491f300..d94ccf6ce9 100644 --- a/gnu/packages/patches/mumps-shared-mumps.patch +++ b/gnu/packages/patches/mumps-shared-mumps.patch @@ -30,16 +30,16 @@ Index: mumps/src/Makefile -$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT): $(OBJS_MOD) $(OBJS_OTHER) - $(AR)$@ $? +$(libdir)/libmumps_common$(PLAT).so: $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER) -+ $(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.1.2.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.1.2.so -Wl,-z,defs -+ ln -s libmumps_common$(PLAT)-5.1.2.so $@ ++ $(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.2.1.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.2.1.so -Wl,-z,defs ++ ln -s libmumps_common$(PLAT)-5.2.1.so $@ + +$(libdir)/lib$(ARITH)mumps$(PLAT).a: $(OBJS_MOD) $(OBJS_OTHER) + $(AR) $@ $? $(RANLIB) $@ +$(libdir)/lib$(ARITH)mumps$(PLAT).so: $(OBJS_MOD) $(OBJS_OTHER) -+ $(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.1.2.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.1.2.so -Wl,-z,defs -+ ln -s lib$(ARITH)mumps$(PLAT)-5.1.2.so $@ ++ $(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.2.1.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.2.1.so -Wl,-z,defs ++ ln -s lib$(ARITH)mumps$(PLAT)-5.2.1.so $@ + # Dependencies between modules: $(ARITH)mumps_load.o: $(ARITH)mumps_comm_buffer.o \ diff --git a/gnu/packages/patches/mumps-shared-pord.patch b/gnu/packages/patches/mumps-shared-pord.patch index 48062d4f89..d3915b0ad9 100644 --- a/gnu/packages/patches/mumps-shared-pord.patch +++ b/gnu/packages/patches/mumps-shared-pord.patch @@ -24,8 +24,8 @@ Index: mumps/PORD/lib/Makefile $(RANLIB) $@ +libpord$(PLAT).so: $(OBJS) -+ $(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-5.1.2.so -o libpord$(PLAT)-5.1.2.so -Wl,-z,defs -+ ln -s libpord$(PLAT)-5.1.2.so $@ ++ $(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-5.2.1.so -o libpord$(PLAT)-5.2.1.so -Wl,-z,defs ++ ln -s libpord$(PLAT)-5.2.1.so $@ + clean: rm -f *.o diff --git a/gnu/packages/patches/qtbase-QTBUG-81715.patch b/gnu/packages/patches/qtbase-QTBUG-81715.patch new file mode 100644 index 0000000000..70b83b97d2 --- /dev/null +++ b/gnu/packages/patches/qtbase-QTBUG-81715.patch @@ -0,0 +1,40 @@ +From 8a3fde00bf53d99e9e4853e8ab97b0e1bcf74915 Mon Sep 17 00:00:00 2001 +From: Joerg Bornemann <joerg.bornemann@qt.io> +Date: Wed, 29 Jan 2020 11:06:35 +0100 +Subject: [PATCH] Fix qt5_make_output_file macro for paths containing dots + +Commit 89bd5a7e broke CMake projects that use dots in their build +paths, because the used regular expression matches the directory part +of the path as well. + +The regex wants to achieve the same as get_filename_component(... +NAME_WLE) which is available since CMake 3.14. Re-implement the +NAME_WLE functionality for older CMake versions by using multiple +get_filename_component calls. + +Fixes: QTBUG-81715 +Task-number: QTBUG-80295 +Change-Id: I2ef053300948f6e1b2c0c5eafac35105f193d4e6 +Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> +--- + +diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake +index 7735e51..b3da640 100644 +--- a/src/corelib/Qt5CoreMacros.cmake ++++ b/src/corelib/Qt5CoreMacros.cmake +@@ -59,7 +59,14 @@ + set(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}") + string(REPLACE ".." "__" _outfile ${_outfile}) + get_filename_component(outpath ${_outfile} PATH) +- string(REGEX REPLACE "\\.[^.]*$" "" _outfile ${_outfile}) ++ if(CMAKE_VERSION VERSION_LESS "3.14") ++ get_filename_component(_outfile_ext ${_outfile} EXT) ++ get_filename_component(_outfile_ext ${_outfile_ext} NAME_WE) ++ get_filename_component(_outfile ${_outfile} NAME_WE) ++ string(APPEND _outfile ${_outfile_ext}) ++ else() ++ get_filename_component(_outfile ${_outfile} NAME_WLE) ++ endif() + file(MAKE_DIRECTORY ${outpath}) + set(${outfile} ${outpath}/${prefix}${_outfile}.${ext}) + endmacro() diff --git a/gnu/packages/patches/racket-store-checksum-override.patch b/gnu/packages/patches/racket-store-checksum-override.patch index 236c843de1..6c4ebcf022 100644 --- a/gnu/packages/patches/racket-store-checksum-override.patch +++ b/gnu/packages/patches/racket-store-checksum-override.patch @@ -11,26 +11,15 @@ See <https://debbugs.gnu.org/30680> for details. --- --- a/collects/compiler/private/cm-minimal.rkt +++ b/collects/compiler/private/cm-minimal.rkt -@@ -7,6 +7,7 @@ +@@ -6,6 +6,7 @@ racket/list racket/path racket/promise + racket/string file/sha1 - setup/collects setup/cross-system -@@ -940,6 +941,10 @@ - #f - (list src-hash recorded-hash))) - -+(define (store-reference? path) -+ (let ([store-prefix (or (getenv "NIX_STORE") "/gnu/store")]) -+ (string-prefix? (path->string path) store-prefix))) -+ - (define (rkt->ss p) - (if (path-has-extension? p #".rkt") - (path-replace-extension p #".ss") -@@ -1015,6 +1020,7 @@ + compiler/compilation-path +@@ -268,7 +269,8 @@ (trace-printf "newer src... ~a > ~a" path-time path-zo-time) (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen #:trying-sha1? sha1-only?)] @@ -39,4 +28,15 @@ See <https://debbugs.gnu.org/30680> for details. + (different-source-sha1-and-dep-recorded path deps)) => (lambda (difference) (trace-printf "different src hash ~a for ~a..." difference path) - (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen \ No newline at end of file + (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen +@@ -1012,5 +1014,9 @@ + #f + (list src-hash recorded-hash))) + ++(define (store-reference? path) ++ (let ([store-prefix (or (getenv "NIX_STORE") "/gnu/store")]) ++ (string-prefix? (path->string path) store-prefix))) ++ + ;; Make sure `recompile-from` is machine-independent so that + ;; recompilation makes sense. + ;; The compilation lock must is held for the source of `recompile-from`. \ No newline at end of file diff --git a/gnu/packages/patches/upx-fix-CVE-2017-15056.patch b/gnu/packages/patches/upx-fix-CVE-2017-15056.patch deleted file mode 100644 index 525980e73e..0000000000 --- a/gnu/packages/patches/upx-fix-CVE-2017-15056.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 3e0c2966dffb5dadb512a476ef4be3d0cc51c2be Mon Sep 17 00:00:00 2001 -From: Pierre Neidhardt <ambrevar@gmail.com> -Date: Sat, 16 Jun 2018 16:35:00 +0200 -Subject: [PATCH] Protect against bad crafted input - -Also check for wrap-around when checking oversize involving e_shoff and e_shnum. - -raised by https://github.com/upx/upx/pull/190 - modified: p_lx_elf.cpp ---- - src/p_lx_elf.cpp | 30 ++++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - -diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp -index 822a7652..41e805ee 100644 ---- a/src/p_lx_elf.cpp -+++ b/src/p_lx_elf.cpp -@@ -235,8 +235,17 @@ PackLinuxElf32::PackLinuxElf32help1(InputFile *f) - sz_phdrs = 0; - return; - } -+ if (0==e_phnum) throwCantUnpack("0==e_phnum"); - e_phoff = get_te32(&ehdri.e_phoff); -+ unsigned const last_Phdr = e_phoff + e_phnum * sizeof(Elf32_Phdr); -+ if (last_Phdr < e_phoff || (unsigned long)file_size < last_Phdr) { -+ throwCantUnpack("bad e_phoff"); -+ } - e_shoff = get_te32(&ehdri.e_shoff); -+ unsigned const last_Shdr = e_shoff + e_shnum * sizeof(Elf32_Shdr); -+ if (last_Shdr < e_shoff || (unsigned long)file_size < last_Shdr) { -+ throwCantUnpack("bad e_shoff"); -+ } - sz_phdrs = e_phnum * e_phentsize; - - if (f && Elf32_Ehdr::ET_DYN!=e_type) { -@@ -599,8 +608,17 @@ PackLinuxElf64::PackLinuxElf64help1(InputFile *f) - sz_phdrs = 0; - return; - } -+ if (0==e_phnum) throwCantUnpack("0==e_phnum"); - e_phoff = get_te64(&ehdri.e_phoff); -+ upx_uint64_t const last_Phdr = e_phoff + e_phnum * sizeof(Elf64_Phdr); -+ if (last_Phdr < e_phoff || (unsigned long)file_size < last_Phdr) { -+ throwCantUnpack("bad e_phoff"); -+ } - e_shoff = get_te64(&ehdri.e_shoff); -+ upx_uint64_t const last_Shdr = e_shoff + e_shnum * sizeof(Elf64_Shdr); -+ if (last_Shdr < e_shoff || (unsigned long)file_size < last_Shdr) { -+ throwCantUnpack("bad e_shoff"); -+ } - sz_phdrs = e_phnum * e_phentsize; - - if (f && Elf64_Ehdr::ET_DYN!=e_type) { -@@ -3763,6 +3781,9 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft) - - void PackLinuxElf64::unpack(OutputFile *fo) - { -+ if (e_phoff != sizeof(Elf64_Ehdr)) {// Phdrs not contiguous with Ehdr -+ throwCantUnpack("bad e_phoff"); -+ } - unsigned const c_phnum = get_te16(&ehdri.e_phnum); - upx_uint64_t old_data_off = 0; - upx_uint64_t old_data_len = 0; -@@ -3828,6 +3849,9 @@ void PackLinuxElf64::unpack(OutputFile *fo) - unsigned total_out = 0; - unsigned c_adler = upx_adler32(NULL, 0); - unsigned u_adler = upx_adler32(NULL, 0); -+ if ((MAX_ELF_HDR - sizeof(Elf64_Ehdr))/sizeof(Elf64_Phdr) < u_phnum) { -+ throwCantUnpack("bad compressed e_phnum"); -+ } - - // Packed ET_EXE has no PT_DYNAMIC. - // Packed ET_DYN has original PT_DYNAMIC for info needed by rtld. -@@ -4383,6 +4407,9 @@ Elf64_Sym const *PackLinuxElf64::elf_lookup(char const *name) const - - void PackLinuxElf32::unpack(OutputFile *fo) - { -+ if (e_phoff != sizeof(Elf32_Ehdr)) {// Phdrs not contiguous with Ehdr -+ throwCantUnpack("bad e_phoff"); -+ } - unsigned const c_phnum = get_te16(&ehdri.e_phnum); - unsigned old_data_off = 0; - unsigned old_data_len = 0; -@@ -4449,6 +4476,9 @@ void PackLinuxElf32::unpack(OutputFile *fo) - unsigned total_out = 0; - unsigned c_adler = upx_adler32(NULL, 0); - unsigned u_adler = upx_adler32(NULL, 0); -+ if ((MAX_ELF_HDR - sizeof(Elf32_Ehdr))/sizeof(Elf32_Phdr) < u_phnum) { -+ throwCantUnpack("bad compressed e_phnum"); -+ } - - // Packed ET_EXE has no PT_DYNAMIC. - // Packed ET_DYN has original PT_DYNAMIC for info needed by rtld. --- -2.17.0 - diff --git a/gnu/packages/patches/zziplib-CVE-2018-16548.patch b/gnu/packages/patches/zziplib-CVE-2018-16548.patch new file mode 100644 index 0000000000..a17c6a9768 --- /dev/null +++ b/gnu/packages/patches/zziplib-CVE-2018-16548.patch @@ -0,0 +1,49 @@ +The following 3 patches applied to 0.13.69 in this order, combined: +https://github.com/gdraheim/zziplib/commit/9411bde3e4a70a81ff3ffd256b71927b2d90dcbb.patch +https://github.com/gdraheim/zziplib/commit/d2e5d5c53212e54a97ad64b793a4389193fec687.patch +https://github.com/gdraheim/zziplib/commit/0e1dadb05c1473b9df2d7b8f298dab801778ef99.patch + +diff --git a/test/test.zip b/test/test.zip +index 2c992ea..952d475 100644 +Binary files a/test/test.zip and b/test/test.zip differ +diff --git a/zzip/zip.c b/zzip/zip.c +index 14e2e06..f97a40a 100644 +--- a/zzip/zip.c ++++ b/zzip/zip.c +@@ -472,9 +472,15 @@ __zzip_parse_root_directory(int fd, + } else + { + if (io->fd.seeks(fd, zz_rootseek + zz_offset, SEEK_SET) < 0) ++ { ++ free(hdr0); + return ZZIP_DIR_SEEK; ++ } + if (io->fd.read(fd, &dirent, sizeof(dirent)) < __sizeof(dirent)) ++ { ++ free(hdr0); + return ZZIP_DIR_READ; ++ } + d = &dirent; + } + +@@ -574,11 +580,18 @@ __zzip_parse_root_directory(int fd, + + if (hdr_return) + *hdr_return = hdr0; ++ else ++ { ++ /* If it is not assigned to *hdr_return, it will never be free()'d */ ++ free(hdr0); ++ } + } /* else zero (sane) entries */ ++ else ++ free(hdr0); + # ifndef ZZIP_ALLOW_MODULO_ENTRIES +- return (entries != zz_entries ? ZZIP_CORRUPTED : 0); ++ return (entries != zz_entries) ? ZZIP_CORRUPTED : 0; + # else +- return ((entries & (unsigned)0xFFFF) != zz_entries ? ZZIP_CORRUPTED : 0); ++ return ((entries & (unsigned)0xFFFF) != zz_entries) ? ZZIP_CORRUPTED : 0; + # endif + } + |