diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-09-07 11:04:44 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-09-07 14:19:08 +0200 |
commit | d9dfbf886ddbb92dfdaa118bb9765e78aad5c53a (patch) | |
tree | 2732020de20a38c09b66a60b0cb36022799f7c2e /gnu/packages/patches | |
parent | b949f34f31a045eb0fb242b81a223178fb6994d3 (diff) | |
parent | 49922efb11da0f0e9d4f5979d081de5ea8c99d25 (diff) |
Merge branch 'master' into core-updates-frozen
Diffstat (limited to 'gnu/packages/patches')
11 files changed, 770 insertions, 75 deletions
diff --git a/gnu/packages/patches/adb-libssl_11-compatibility.patch b/gnu/packages/patches/adb-libssl_11-compatibility.patch new file mode 100644 index 0000000000..9affe58b5d --- /dev/null +++ b/gnu/packages/patches/adb-libssl_11-compatibility.patch @@ -0,0 +1,35 @@ +This patch is taken from Debian +URL: https://sources.debian.org/data/main/a/android-platform-system-core/1%3A7.0.0%2Br33-1/debian/patches/adb_libssl_11.diff +Description: adb: Make compatible with openssl 1.1 + OpenSSL version 1.1 brought some API changes which broke the build here, + fix that by accessing rsa->n (and e) directly, using RSA_get0_key instead. +Author: Chirayu Desai <chirayudesai1@gmail.com +Last-Update: 2016-11-10 +--- a/adb/adb_auth_host.cpp ++++ b/adb/adb_auth_host.cpp +@@ -71,6 +71,7 @@ + BIGNUM* rem = BN_new(); + BIGNUM* n = BN_new(); + BIGNUM* n0inv = BN_new(); ++ BIGNUM* e = BN_new(); + + if (RSA_size(rsa) != RSANUMBYTES) { + ret = 0; +@@ -78,7 +79,7 @@ + } + + BN_set_bit(r32, 32); +- BN_copy(n, rsa->n); ++ RSA_get0_key(rsa, &n, &e, NULL); + BN_set_bit(r, RSANUMWORDS * 32); + BN_mod_sqr(rr, r, n, ctx); + BN_div(NULL, rem, n, r32, ctx); +@@ -92,7 +93,7 @@ + BN_div(n, rem, n, r32, ctx); + pkey->n[i] = BN_get_word(rem); + } +- pkey->exponent = BN_get_word(rsa->e); ++ pkey->exponent = BN_get_word(e); + + out: + BN_free(n0inv); diff --git a/gnu/packages/patches/beets-werkzeug-compat.patch b/gnu/packages/patches/beets-werkzeug-compat.patch deleted file mode 100644 index 1a91c3a3f9..0000000000 --- a/gnu/packages/patches/beets-werkzeug-compat.patch +++ /dev/null @@ -1,18 +0,0 @@ -Be compatible with python-werkzeug 1.0.0. - -Taken from upstream: -https://github.com/beetbox/beets/commit/d43d54e21cde97f57f19486925ab56b419254cc8 - -diff --git a/beetsplug/web/__init__.py b/beetsplug/web/__init__.py -index f53fb3a954..21ff5d94ed 100644 ---- a/beetsplug/web/__init__.py -+++ b/beetsplug/web/__init__.py -@@ -169,7 +169,7 @@ def to_python(self, value): - return ids - - def to_url(self, value): -- return ','.join(value) -+ return ','.join(str(v) for v in value) - - - class QueryConverter(PathConverter): diff --git a/gnu/packages/patches/mailutils-variable-lookup.patch b/gnu/packages/patches/mailutils-variable-lookup.patch new file mode 100644 index 0000000000..0069f3596d --- /dev/null +++ b/gnu/packages/patches/mailutils-variable-lookup.patch @@ -0,0 +1,26 @@ +Have 'send-message' look up 'mu-debug' & co. in the right +module: <https://issues.guix.gnu.org/49968>. + +Submitted: https://lists.gnu.org/archive/html/bug-mailutils/2021-09/msg00000.html + +--- + include/mailutils/guile.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/include/mailutils/guile.h b/include/mailutils/guile.h +index f05550678..47f89db39 100644 +--- a/include/mailutils/guile.h ++++ b/include/mailutils/guile.h +@@ -20,7 +20,8 @@ + + #include <libguile.h> + +-#define MU_SCM_SYMBOL_VALUE(p) SCM_VARIABLE_REF(scm_c_lookup(p)) ++#define MU_SCM_SYMBOL_VALUE(p) \ ++ (scm_c_public_ref ("mailutils mailutils", p)) + + typedef struct + { +-- +2.33.0 + diff --git a/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch b/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch new file mode 100644 index 0000000000..a74034a2c5 --- /dev/null +++ b/gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch @@ -0,0 +1,156 @@ +From d10ea2ad7efc2364a8a2007b4c6d3e85511e2f84 Mon Sep 17 00:00:00 2001 +From: Maxime Devos <maximedevos@telenet.be> +Date: Tue, 3 Aug 2021 01:00:23 +0200 +Subject: [PATCH] Add environment variable MINETEST_MOD_PATH + +This adds an environment variable MINETEST_MOD_PATH. +When it exists, Minetest will look there for mods +in addition to ~/.minetest/mods/. Mods can still be +installed to ~/.minetest/mods/ with the built-in installer. + +With thanks to Leo Prikler. +--- + builtin/mainmenu/pkgmgr.lua | 7 +++---- + doc/menu_lua_api.txt | 8 +++++++- + src/content/subgames.cpp | 11 +++++++++++ + src/script/lua_api/l_mainmenu.cpp | 23 +++++++++++++++++++++++ + src/script/lua_api/l_mainmenu.h | 2 ++ + 5 files changed, 46 insertions(+), 5 deletions(-) + +diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua +index 787936e31..d8fba0ebe 100644 +--- a/builtin/mainmenu/pkgmgr.lua ++++ b/builtin/mainmenu/pkgmgr.lua +@@ -682,10 +682,9 @@ function pkgmgr.preparemodlist(data) + local game_mods = {} + + --read global mods +- local modpath = core.get_modpath() +- +- if modpath ~= nil and +- modpath ~= "" then ++ local modpaths = core.get_modpaths() ++ --XXX what was ‘modpath ~= ""’ and ‘modpath ~= nil’ for? ++ for _,modpath in ipairs(modpaths) do + get_mods(modpath,global_mods) + end + +diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt +index b3975bc1d..132444b14 100644 +--- a/doc/menu_lua_api.txt ++++ b/doc/menu_lua_api.txt +@@ -218,7 +218,13 @@ Package - content which is downloadable from the content db, may or may not be i + * returns path to global user data, + the directory that contains user-provided mods, worlds, games, and texture packs. + * core.get_modpath() (possible in async calls) +- * returns path to global modpath ++ * returns path to global modpath, where mods can be installed ++* core.get_modpaths() (possible in async calls) ++ * returns list of paths to global modpaths, where mods have been installed ++ ++ The difference with "core.get_modpath" is that no mods should be installed in these ++ directories by Minetest -- they might be read-only. ++ + * core.get_clientmodpath() (possible in async calls) + * returns path to global client-side modpath + * core.get_gamepath() (possible in async calls) +diff --git a/src/content/subgames.cpp b/src/content/subgames.cpp +index e9dc609b0..d73f95a1f 100644 +--- a/src/content/subgames.cpp ++++ b/src/content/subgames.cpp +@@ -61,6 +61,12 @@ std::string getSubgamePathEnv() + return subgame_path ? std::string(subgame_path) : ""; + } + ++std::string getModPathEnv() ++{ ++ char *mod_path = getenv("MINETEST_MOD_PATH"); ++ return mod_path ? std::string(mod_path) : ""; ++} ++ + SubgameSpec findSubgame(const std::string &id) + { + if (id.empty()) +@@ -110,6 +116,11 @@ SubgameSpec findSubgame(const std::string &id) + std::set<std::string> mods_paths; + if (!user_game) + mods_paths.insert(share + DIR_DELIM + "mods"); ++ ++ Strfnd mod_search_paths(getModPathEnv()); ++ while (!mod_search_paths.at_end()) ++ mods_paths.insert(mod_search_paths.next(PATH_DELIM)); ++ + if (user != share || user_game) + mods_paths.insert(user + DIR_DELIM + "mods"); + +diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp +index 3e9709bde..903ac3a22 100644 +--- a/src/script/lua_api/l_mainmenu.cpp ++++ b/src/script/lua_api/l_mainmenu.cpp +@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., + #include "lua_api/l_internal.h" + #include "common/c_content.h" + #include "cpp_api/s_async.h" ++#include "util/strfnd.h" + #include "gui/guiEngine.h" + #include "gui/guiMainMenu.h" + #include "gui/guiKeyChangeMenu.h" +@@ -502,6 +503,26 @@ int ModApiMainMenu::l_get_modpath(lua_State *L) + return 1; + } + ++/******************************************************************************/ ++int ModApiMainMenu::l_get_modpaths(lua_State *L) ++{ ++ const char *c_modpath = getenv("MINETEST_MOD_PATH"); ++ if (c_modpath == NULL) ++ c_modpath = ""; ++ int index = 1; ++ lua_newtable(L); ++ Strfnd mod_search_paths{std::string(c_modpath)}; ++ while (!mod_search_paths.at_end()) { ++ std::string component = mod_search_paths.next(PATH_DELIM); ++ lua_pushstring(L, component.c_str()); ++ lua_rawseti(L, -2, index); ++ index++; ++ } ++ ModApiMainMenu::l_get_modpath(L); ++ lua_rawseti(L, -2, index); ++ return 1; ++} ++ + /******************************************************************************/ + int ModApiMainMenu::l_get_clientmodpath(lua_State *L) + { +@@ -949,6 +970,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top) + API_FCT(get_mapgen_names); + API_FCT(get_user_path); + API_FCT(get_modpath); ++ API_FCT(get_modpaths); + API_FCT(get_clientmodpath); + API_FCT(get_gamepath); + API_FCT(get_texturepath); +@@ -983,6 +1005,7 @@ void ModApiMainMenu::InitializeAsync(lua_State *L, int top) + API_FCT(get_mapgen_names); + API_FCT(get_user_path); + API_FCT(get_modpath); ++ API_FCT(get_modpaths); + API_FCT(get_clientmodpath); + API_FCT(get_gamepath); + API_FCT(get_texturepath); +diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h +index 33ac9e721..a6a54a2cb 100644 +--- a/src/script/lua_api/l_mainmenu.h ++++ b/src/script/lua_api/l_mainmenu.h +@@ -112,6 +112,8 @@ class ModApiMainMenu: public ModApiBase + + static int l_get_modpath(lua_State *L); + ++ static int l_get_modpaths(lua_State *L); ++ + static int l_get_clientmodpath(lua_State *L); + + static int l_get_gamepath(lua_State *L); +-- +2.32.0 + diff --git a/gnu/packages/patches/ocaml-ppx-variants-ppxlib-api-change.patch b/gnu/packages/patches/ocaml-ppx-variants-ppxlib-api-change.patch new file mode 100644 index 0000000000..b437bfb061 --- /dev/null +++ b/gnu/packages/patches/ocaml-ppx-variants-ppxlib-api-change.patch @@ -0,0 +1,42 @@ +From 6103f6fc56f978c847ba7c1f2d9f38ee93a5e337 Mon Sep 17 00:00:00 2001 +From: Sonja Heinze <sonjaleaheinze@gmail.com> +Date: Tue, 9 Mar 2021 12:57:47 +0100 +Subject: [PATCH] Adapt to Ppxlib's API change + +Ppxlib is removing Lexer.keyword_table from the API in exchange for +the more lightweight Keyword.is_keyword. + +Signed-off-by: Sonja Heinze <sonjaleaheinze@gmail.com> +--- +Patch from <https://github.com/janestreet/ppx_variants_conv/pull/9>. + + ppx_variants_conv.opam | 2 +- + src/ppx_variants_conv.ml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ppx_variants_conv.opam b/ppx_variants_conv.opam +index 7e7148d..b56040f 100644 +--- a/ppx_variants_conv.opam ++++ b/ppx_variants_conv.opam +@@ -15,7 +15,7 @@ depends: [ + "base" {>= "v0.14" & < "v0.15"} + "variantslib" {>= "v0.14" & < "v0.15"} + "dune" {>= "2.0.0"} +- "ppxlib" {>= "0.14.0"} ++ "ppxlib" {>= "0.23.0"} + ] + synopsis: "Generation of accessor and iteration functions for ocaml variant types" + description: " +diff --git a/src/ppx_variants_conv.ml b/src/ppx_variants_conv.ml +index 8d60086..112fc78 100644 +--- a/src/ppx_variants_conv.ml ++++ b/src/ppx_variants_conv.ml +@@ -66,7 +66,7 @@ end + + let variant_name_to_string v = + let s = String.lowercase v in +- if Caml.Hashtbl.mem Lexer.keyword_table s ++ if Keyword.is_keyword s + then s ^ "_" + else s + diff --git a/gnu/packages/patches/python-execnet-read-only-fix.patch b/gnu/packages/patches/python-execnet-read-only-fix.patch new file mode 100644 index 0000000000..58a4b129a7 --- /dev/null +++ b/gnu/packages/patches/python-execnet-read-only-fix.patch @@ -0,0 +1,77 @@ +From 0d6562a20b0610c5a83d1c66ac879223b84a2746 Mon Sep 17 00:00:00 2001 +From: Maxim Cournoyer <maxim.cournoyer@gmail.com> +Date: Thu, 26 Aug 2021 00:43:26 -0400 +Subject: [PATCH] rsync_remote: Fix a problem when receiving read-only + directories. + +Before this change, when the source directories hierarchy was +read-only, the read-only mode would be preserved at the destination, +preventing child directories to be recreated by a normal user (a +permission denied error, EACCES would be raised). + +* execnet/rsync_remote.py (serve_rsync.receive_directory_structure): +Bitwise OR to ensure the write bit is set on received directories. +* testing/test_rsync.py (TestRSync) +<test_read_only_directories>: New test. +--- + execnet/rsync_remote.py | 8 ++++++-- + testing/test_rsync.py | 17 +++++++++++++++++ + 2 files changed, 23 insertions(+), 2 deletions(-) + +diff --git a/execnet/rsync_remote.py b/execnet/rsync_remote.py +index cd5e765..55d154c 100644 +--- a/execnet/rsync_remote.py ++++ b/execnet/rsync_remote.py +@@ -35,7 +35,11 @@ def serve_rsync(channel): + os.makedirs(path) + mode = msg.pop(0) + if mode: +- os.chmod(path, mode) ++ # Ensure directories are writable, otherwise a ++ # permission denied error (EACCES) would be raised ++ # when attempting to receive read-only directory ++ # structures. ++ os.chmod(path, mode | 0o700) + entrynames = {} + for entryname in msg: + destpath = os.path.join(path, entryname) +@@ -59,7 +63,7 @@ def serve_rsync(channel): + checksum = md5(f.read()).digest() + f.close() + elif msg_mode and msg_mode != st.st_mode: +- os.chmod(path, msg_mode) ++ os.chmod(path, msg_mode | 0o700) + return + else: + return # already fine +diff --git a/testing/test_rsync.py b/testing/test_rsync.py +index 995f229..1d6c30c 100644 +--- a/testing/test_rsync.py ++++ b/testing/test_rsync.py +@@ -157,6 +157,23 @@ class TestRSync: + mode = destdir.stat().mode + assert mode & 511 == 504 + ++ @py.test.mark.skipif("sys.platform == 'win32' or getattr(os, '_name', '') == 'nt'") ++ def test_read_only_directories(self, dirs, gw1): ++ source = dirs.source ++ dest = dirs.dest1 ++ source.ensure("sub", "subsub", dir=True) ++ source.join("sub").chmod(0o500) ++ source.join("sub", "subsub").chmod(0o500) ++ ++ # The destination directories should be created with the write ++ # permission forced, to avoid raising an EACCES error. ++ rsync = RSync(source) ++ rsync.add_target(gw1, dest) ++ rsync.send() ++ ++ assert dest.join("sub").stat().mode & 0o700 ++ assert dest.join("sub").join("subsub").stat().mode & 0o700 ++ + @needssymlink + def test_symlink_rsync(self, dirs, gw1): + source = dirs.source +-- +2.32.0 + diff --git a/gnu/packages/patches/python-mediafile-wavpack.patch b/gnu/packages/patches/python-mediafile-wavpack.patch deleted file mode 100644 index 9839fe87b5..0000000000 --- a/gnu/packages/patches/python-mediafile-wavpack.patch +++ /dev/null @@ -1,57 +0,0 @@ -This patch has already been applied upstream, but is not included in the -current release 0.6.0. - -From d2fc3b59f77c515b02dfe7ad936f89264375d2b4 Mon Sep 17 00:00:00 2001 -From: Adrian Sampson <adrian@radbox.org> -Date: Wed, 29 Jul 2020 19:42:57 -0400 -Subject: [PATCH] Fix test for WavPack bitrate - -Fixes #34. ---- - docs/index.rst | 5 +++++ - mediafile.py | 2 +- - test/test_mediafile.py | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/docs/index.rst b/docs/index.rst -index 7b622df..1465405 100644 ---- a/docs/index.rst -+++ b/docs/index.rst -@@ -100,6 +100,11 @@ Internals - Changelog - --------- - -+v0.7.0 -+'''''' -+ -+- Mutagen 1.45.0 or later is now required. -+ - v0.6.0 - '''''' - -diff --git a/mediafile.py b/mediafile.py -index 23fadaf..9e9d063 100644 ---- a/mediafile.py -+++ b/mediafile.py -@@ -56,7 +56,7 @@ - import six - - --__version__ = '0.6.0' -+__version__ = '0.7.0' - __all__ = ['UnreadableFileError', 'FileTypeError', 'MediaFile'] - - log = logging.getLogger(__name__) -diff --git a/test/test_mediafile.py b/test/test_mediafile.py -index e9e1850..7f17f44 100644 ---- a/test/test_mediafile.py -+++ b/test/test_mediafile.py -@@ -907,7 +907,7 @@ class WavpackTest(ReadWriteTestBase, unittest.TestCase): - 'bitrate': 109312, - 'format': u'WavPack', - 'samplerate': 44100, -- 'bitdepth': 0, -+ 'bitdepth': 16, - 'channels': 1, - } - diff --git a/gnu/packages/patches/python-pyan3-fix-absolute-path-bug.patch b/gnu/packages/patches/python-pyan3-fix-absolute-path-bug.patch new file mode 100644 index 0000000000..0b6a083fa3 --- /dev/null +++ b/gnu/packages/patches/python-pyan3-fix-absolute-path-bug.patch @@ -0,0 +1,160 @@ +From ac1bd55d07fd1bad2f4a92dc0809607c407d9140 Mon Sep 17 00:00:00 2001 +From: "Maciej A. Czyzewski" <maciejanthonyczyzewski@gmail.com> +Date: Wed, 9 Jun 2021 15:29:18 +0200 +Subject: [PATCH] feature: new params for graphviz + solves #70 + +- solve abs path bug #70 +- new params for graphviz (ranksep; layout) +- tested layout `dot`; `fdp` (square graph) +- updated `.gitignore` (files gen. after `visualize_pyan_architecture.sh`) +--- + .gitignore | 5 ++++ + README.md | 6 ++-- + pyan/main.py | 55 +++++++++++++++++++++++++++++++--- + visualize_pyan_architecture.sh | 5 ++++ + 4 files changed, 64 insertions(+), 7 deletions(-) + +diff --git a/.gitignore b/.gitignore +index 990fdc0c..93313aaf 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -162,3 +162,8 @@ htmlcov + .idea/ + .history/ + .vscode/ ++ ++# our vis. of architecture ++architecture.dot ++architecture.html ++architecture.svg +diff --git a/README.md b/README.md +index d1f19dcf..9e6919a3 100644 +--- a/README.md ++++ b/README.md +@@ -48,7 +48,7 @@ See `pyan3 --help`. + + Example: + +-`pyan *.py --uses --no-defines --colored --grouped --annotated --dot >myuses.dot` ++`pyan3 *.py --uses --no-defines --colored --grouped --annotated --dot >myuses.dot` + + Then render using your favorite GraphViz filter, mainly `dot` or `fdp`: + +@@ -56,11 +56,11 @@ Then render using your favorite GraphViz filter, mainly `dot` or `fdp`: + + Or use directly + +-`pyan *.py --uses --no-defines --colored --grouped --annotated --svg >myuses.svg` ++`pyan3 *.py --uses --no-defines --colored --grouped --annotated --svg >myuses.svg` + + You can also export as an interactive HTML + +-`pyan *.py --uses --no-defines --colored --grouped --annotated --html > myuses.html` ++`pyan3 *.py --uses --no-defines --colored --grouped --annotated --html > myuses.html` + + Alternatively, you can call `pyan` from a script + +diff --git a/pyan/main.py b/pyan/main.py +index 5d079714..b1a16f63 100644 +--- a/pyan/main.py ++++ b/pyan/main.py +@@ -141,6 +141,31 @@ def main(cli_args=None): + ), + ) + ++ parser.add_argument( ++ "--dot-ranksep", ++ default="0.5", ++ dest="ranksep", ++ help=( ++ "specifies the dot graph 'ranksep' property for " ++ "controlling desired rank separation, in inches. " ++ "Allowed values: [0.02 .. 1000.0]. " ++ "[dot only]" ++ ), ++ ) ++ ++ parser.add_argument( ++ "--graphviz-layout", ++ default="dot", ++ dest="layout", ++ help=( ++ "specifies the graphviz 'layout' property for " ++ "the name of the layout algorithm to use. " ++ "Allowed values: ['dot', 'neato', 'fdp', 'sfdp', 'twopi', 'circo']. " ++ "Recommended values: ['dot', 'fdp']. " ++ "[graphviz only]" ++ ), ++ ) ++ + parser.add_argument( + "-a", + "--annotated", +@@ -159,7 +184,12 @@ def main(cli_args=None): + + known_args, unknown_args = parser.parse_known_args(cli_args) + +- filenames = [fn2 for fn in unknown_args for fn2 in glob(fn, recursive=True)] ++ ++ filenames = [] ++ for fn in unknown_args: ++ for fn2 in glob(fn, recursive=True): ++ abs_fn2 = os.path.abspath(fn2) ++ filenames.append(abs_fn2) + + # determine root + if known_args.root is not None: +@@ -203,6 +233,11 @@ def main(cli_args=None): + handler = logging.FileHandler(known_args.logname) + logger.addHandler(handler) + ++ logger.debug(f"[files] {unknown_args}") ++ ++ if root: ++ root = os.path.abspath(root) ++ + v = CallGraphVisitor(filenames, logger=logger, root=root) + + if known_args.function or known_args.namespace: +@@ -222,13 +257,25 @@ def main(cli_args=None): + writer = None + + if known_args.dot: +- writer = DotWriter(graph, options=["rankdir=" + known_args.rankdir], output=known_args.filename, logger=logger) ++ writer = DotWriter(graph, options=[ ++ "rankdir=" + known_args.rankdir, ++ "ranksep=" + known_args.ranksep, ++ "layout=" + known_args.layout, ++ ], output=known_args.filename, logger=logger) + + if known_args.html: +- writer = HTMLWriter(graph, options=["rankdir=" + known_args.rankdir], output=known_args.filename, logger=logger) ++ writer = HTMLWriter(graph, options=[ ++ "rankdir=" + known_args.rankdir, ++ "ranksep=" + known_args.ranksep, ++ "layout=" + known_args.layout, ++ ], output=known_args.filename, logger=logger) + + if known_args.svg: +- writer = SVGWriter(graph, options=["rankdir=" + known_args.rankdir], output=known_args.filename, logger=logger) ++ writer = SVGWriter(graph, options=[ ++ "rankdir=" + known_args.rankdir, ++ "ranksep=" + known_args.ranksep, ++ "layout=" + known_args.layout, ++ ], output=known_args.filename, logger=logger) + + if known_args.tgf: + writer = TgfWriter(graph, output=known_args.filename, logger=logger) +diff --git a/visualize_pyan_architecture.sh b/visualize_pyan_architecture.sh +index 22c63342..81b6ca24 100755 +--- a/visualize_pyan_architecture.sh ++++ b/visualize_pyan_architecture.sh +@@ -2,3 +2,8 @@ + echo -ne "Pyan architecture: generating architecture.{dot,svg}\n" + python3 -m pyan pyan/*.py --no-defines --uses --colored --annotate --dot -V >architecture.dot 2>architecture.log + dot -Tsvg architecture.dot >architecture.svg ++echo -ne "Pyan architecture: generating architecture.{html,graphviz=fdp}\n" ++python3 -m pyan pyan/*.py --no-defines --uses \ ++ --grouped --nested-groups \ ++ --graphviz-layout fdp \ ++ --colored --html > architecture.html diff --git a/gnu/packages/patches/python-pyan3-fix-positional-arguments.patch b/gnu/packages/patches/python-pyan3-fix-positional-arguments.patch new file mode 100644 index 0000000000..81923d7a41 --- /dev/null +++ b/gnu/packages/patches/python-pyan3-fix-positional-arguments.patch @@ -0,0 +1,22 @@ +From 37404bb039bd9c5509b4aec8f61e360dfba50715 Mon Sep 17 00:00:00 2001 +From: Wenxin Ling <w.ling@mediaire.de> +Date: Mon, 1 Mar 2021 15:21:16 +0100 +Subject: [PATCH] Fix positional arguments issue for CallGraphVisitor + +--- + pyan/main.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyan/main.py b/pyan/main.py +index 18821a14..5d079714 100644 +--- a/pyan/main.py ++++ b/pyan/main.py +@@ -203,7 +203,7 @@ def main(cli_args=None): + handler = logging.FileHandler(known_args.logname) + logger.addHandler(handler) + +- v = CallGraphVisitor(filenames, logger, root=root) ++ v = CallGraphVisitor(filenames, logger=logger, root=root) + + if known_args.function or known_args.namespace: + diff --git a/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch b/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch new file mode 100644 index 0000000000..519f92c047 --- /dev/null +++ b/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch @@ -0,0 +1,238 @@ +# Modified to apply on 0.10.0. + +From c7a111180b3f35f2fe5a07ead185e4e792f9dfa0 Mon Sep 17 00:00:00 2001 +From: Andrew Svetlov <andrew.svetlov@gmail.com> +Date: Thu, 9 Apr 2020 08:44:46 +0200 +Subject: [PATCH] Test on Python 3.8, drop 3.3 and 3.4 + +--- + .travis.yml | 7 +++--- + setup.py | 1 + + tests/conftest.py | 2 +- + tests/test_hypothesis_integration.py | 2 +- + tests/test_simple.py | 32 +++++++++++----------------- + tests/test_simple_35.py | 17 ++++++--------- + tests/test_subprocess.py | 6 ++---- + tox.ini | 5 +++-- + 8 files changed, 29 insertions(+), 43 deletions(-) + +diff --git a/.travis.yml b/.travis.yml +index fe90234..b93377a 100644 +--- a/.travis.yml ++++ b/.travis.yml +@@ -1,4 +1,5 @@ + language: python ++ + matrix: + include: + - python: 3.5 +@@ -7,10 +8,8 @@ matrix: + env: TOX_ENV=py36 + - python: 3.7 + env: TOX_ENV=py37 +- # TODO: the dist and sudo keys are currently needed to use Python 3.7. +- # They should be removed once Travis-CI supports 3.7 on the default image. +- dist: xenial +- sudo: true ++ - python: 3.8 ++ env: TOX_ENV=py38 + + install: pip install tox-travis coveralls + +diff --git a/setup.py b/setup.py +index 18566bf..6175711 100644 +--- a/setup.py ++++ b/setup.py +@@ -36,6 +36,7 @@ def find_version(): + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", ++ "Programming Language :: Python :: 3.8", + "Topic :: Software Development :: Testing", + "Framework :: Pytest", + ], +diff --git a/tests/conftest.py b/tests/conftest.py +index 6203cf8..cc2ec16 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -17,7 +17,7 @@ def dependent_fixture(event_loop): + async def just_a_sleep(): + """Just sleep a little while.""" + nonlocal event_loop +- await asyncio.sleep(0.1, loop=event_loop) ++ await asyncio.sleep(0.1) + nonlocal counter + counter += 1 + +diff --git a/tests/test_simple.py b/tests/test_simple.py +index 1627139..00c07fc 100644 +--- a/tests/test_simple.py ++++ b/tests/test_simple.py +@@ -1,28 +1,26 @@ + """Quick'n'dirty unit tests for provided fixtures and markers.""" + import asyncio +-import os + import pytest + + import pytest_asyncio.plugin + + +-async def async_coro(loop=None): +- """A very simple coroutine.""" +- await asyncio.sleep(0, loop=loop) ++async def async_coro(): ++ await asyncio.sleep(0) + return 'ok' + + + def test_event_loop_fixture(event_loop): + """Test the injection of the event_loop fixture.""" + assert event_loop +- ret = event_loop.run_until_complete(async_coro(event_loop)) ++ ret = event_loop.run_until_complete(async_coro()) + assert ret == 'ok' + + + @pytest.mark.asyncio +-def test_asyncio_marker(): ++async def test_asyncio_marker(): + """Test the asyncio pytest marker.""" +- yield # sleep(0) ++ await asyncio.sleep(0) + + + @pytest.mark.xfail(reason='need a failure', strict=True) +@@ -45,13 +43,11 @@ async def closer(_, writer): + writer.close() + + server1 = await asyncio.start_server(closer, host='localhost', +- port=unused_tcp_port, +- loop=event_loop) ++ port=unused_tcp_port) + + with pytest.raises(IOError): + await asyncio.start_server(closer, host='localhost', +- port=unused_tcp_port, +- loop=event_loop) ++ port=unused_tcp_port) + + server1.close() + await server1.wait_closed() +@@ -68,20 +64,16 @@ async def closer(_, writer): + unused_tcp_port_factory()) + + server1 = await asyncio.start_server(closer, host='localhost', +- port=port1, +- loop=event_loop) ++ port=port1) + server2 = await asyncio.start_server(closer, host='localhost', +- port=port2, +- loop=event_loop) ++ port=port2) + server3 = await asyncio.start_server(closer, host='localhost', +- port=port3, +- loop=event_loop) ++ port=port3) + + for port in port1, port2, port3: + with pytest.raises(IOError): + await asyncio.start_server(closer, host='localhost', +- port=port, +- loop=event_loop) ++ port=port) + + server1.close() + await server1.wait_closed() +@@ -117,7 +109,7 @@ class Test: + @pytest.mark.asyncio + async def test_asyncio_marker_method(self, event_loop): + """Test the asyncio pytest marker in a Test class.""" +- ret = await async_coro(event_loop) ++ ret = await async_coro() + assert ret == 'ok' + + +diff --git a/tests/test_simple_35.py b/tests/test_simple_35.py +index 1e4d697..4141fb0 100644 +--- a/tests/test_simple_35.py ++++ b/tests/test_simple_35.py +@@ -6,7 +6,7 @@ + + @pytest.mark.asyncio + async def async_coro(loop): +- await asyncio.sleep(0, loop=loop) ++ await asyncio.sleep(0) + return 'ok' + + +@@ -27,8 +27,7 @@ async def closer(_, writer): + writer.close() + + server1 = await asyncio.start_server(closer, host='localhost', +- port=unused_tcp_port, +- loop=event_loop) ++ port=unused_tcp_port) + + server1.close() + await server1.wait_closed() +@@ -45,20 +44,16 @@ async def closer(_, writer): + + async def run_test(): + server1 = await asyncio.start_server(closer, host='localhost', +- port=port1, +- loop=event_loop) ++ port=port1) + server2 = await asyncio.start_server(closer, host='localhost', +- port=port2, +- loop=event_loop) ++ port=port2) + server3 = await asyncio.start_server(closer, host='localhost', +- port=port3, +- loop=event_loop) ++ port=port3) + + for port in port1, port2, port3: + with pytest.raises(IOError): + await asyncio.start_server(closer, host='localhost', +- port=port, +- loop=event_loop) ++ port=port) + + server1.close() + await server1.wait_closed() +diff --git a/tests/test_subprocess.py b/tests/test_subprocess.py +index 83490e8..069c6c2 100644 +--- a/tests/test_subprocess.py ++++ b/tests/test_subprocess.py +@@ -21,8 +21,7 @@ def event_loop(): + async def test_subprocess(event_loop): + """Starting a subprocess should be possible.""" + proc = await asyncio.subprocess.create_subprocess_exec( +- sys.executable, '--version', stdout=asyncio.subprocess.PIPE, +- loop=event_loop) ++ sys.executable, '--version', stdout=asyncio.subprocess.PIPE) + await proc.communicate() + + +@@ -30,6 +29,5 @@ async def test_subprocess(event_loop): + async def test_subprocess_forbid(event_loop): + """Starting a subprocess should be possible.""" + proc = await asyncio.subprocess.create_subprocess_exec( +- sys.executable, '--version', stdout=asyncio.subprocess.PIPE, +- loop=event_loop) ++ sys.executable, '--version', stdout=asyncio.subprocess.PIPE) + await proc.communicate() +diff --git a/tox.ini b/tox.ini +index 13d5155..eed6fb6 100644 +--- a/tox.ini ++++ b/tox.ini +@@ -1,6 +1,7 @@ + [tox] +-envlist = py35, py36, py37 +-minversion = 2.5.0 ++minversion = 3.14.0 ++envlist = py35, py36, py37, py38 ++skip_missing_interpreters = true + + [testenv] + extras = testing diff --git a/gnu/packages/patches/u-boot-nintendo-nes-serial.patch b/gnu/packages/patches/u-boot-nintendo-nes-serial.patch new file mode 100644 index 0000000000..3588236803 --- /dev/null +++ b/gnu/packages/patches/u-boot-nintendo-nes-serial.patch @@ -0,0 +1,14 @@ +Date: Sun, 5 Sep 2021 23:24:00 +0200 +Author: Danny Milosavljevic <dannym@scratchpost.org> +Description: Set console UART to use pins PB0 and PB1. +--- u-boot-2018.11/configs/Nintendo_NES_Classic_Edition_defconfig.orig 2021-09-05 23:09:15.905846467 +0200 ++++ u-boot-2018.11/configs/Nintendo_NES_Classic_Edition_defconfig 2021-09-05 23:12:21.562774694 +0200 +@@ -21,7 +21,7 @@ + CONFIG_SYS_NAND_OOBSIZE=0x40 + CONFIG_AXP_DLDO1_VOLT=3300 + CONFIG_AXP_ELDO2_VOLT=1800 +-CONFIG_CONS_INDEX=5 ++CONFIG_CONS_INDEX=1 + CONFIG_USB_MUSB_GADGET=y + CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y + CONFIG_USB_FUNCTION_MASS_STORAGE=y |