Loading pkgs/misc/uboot/binman-resources.patch 0 → 100644 +72 −0 Original line number Diff line number Diff line (Patch from https://lists.denx.de/pipermail/u-boot/2024-July/559077.html) pkg_resources is deprecated long ago and being removed in python 3.12. Reimplement functions with importlib.resources. Link: https://docs.python.org/3/library/importlib.resources.html Signed-off-by: Jiaxun Yang <jiaxun.yang at flygoat.com> --- tools/binman/control.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/binman/control.py b/tools/binman/control.py index 2f00279232b8..5549b0ad2185 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -8,12 +8,11 @@ from collections import OrderedDict import glob try: - import importlib.resources -except ImportError: # pragma: no cover + from importlib import resources +except ImportError: # for Python 3.6 - import importlib_resources + import importlib_resources as resources import os -import pkg_resources import re import sys @@ -96,12 +95,12 @@ def _ReadMissingBlobHelp(): msg = '' return tag, msg - my_data = pkg_resources.resource_string(__name__, 'missing-blob-help') + my_data = resources.files(__package__).joinpath('missing-blob-help').read_text() re_tag = re.compile('^([-a-z0-9]+):$') result = {} tag = None msg = '' - for line in my_data.decode('utf-8').splitlines(): + for line in my_data.splitlines(): if not line.startswith('#'): m_tag = re_tag.match(line) if m_tag: @@ -151,8 +150,9 @@ def GetEntryModules(include_testing=True): Returns: Set of paths to entry class filenames """ - glob_list = pkg_resources.resource_listdir(__name__, 'etype') - glob_list = [fname for fname in glob_list if fname.endswith('.py')] + directory = resources.files("binman.etype") + glob_list = [entry.name for entry in directory.iterdir() + if entry.name.endswith('.py')] return set([os.path.splitext(os.path.basename(item))[0] for item in glob_list if include_testing or '_testing' not in item]) @@ -735,7 +735,7 @@ def Binman(args): global state if args.full_help: - with importlib.resources.path('binman', 'README.rst') as readme: + with resources.path('binman', 'README.rst') as readme: tools.print_full_help(str(readme)) return 0 -- 2.45.2 pkgs/misc/uboot/default.nix +5 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ armTrustedFirmwareS905, opensbi, buildPackages, callPackages, darwin, }@pkgs: Loading Loading @@ -198,8 +199,10 @@ in filesToInstall = [ "tools/dumpimage" "tools/fdt_add_pubkey" "tools/fdtgrep" "tools/kwboot" "tools/mkeficapsule" "tools/mkenvimage" "tools/mkimage" "tools/env/fw_printenv" Loading @@ -211,6 +214,8 @@ in }; }; ubootPythonTools = lib.recurseIntoAttrs (callPackages ./python.nix { }); ubootA20OlinuxinoLime = buildUBoot { defconfig = "A20-OLinuXino-Lime_defconfig"; extraMeta.platforms = [ "armv7l-linux" ]; Loading pkgs/misc/uboot/python.nix 0 → 100644 +160 −0 Original line number Diff line number Diff line { lib, python3Packages, fetchPypi, makeWrapper, armTrustedFirmwareTools, bzip2, cbfstool, gzip, lz4, lzop, openssl, ubootTools, vboot_reference, xilinx-bootgen, xz, zstd, }: let # We are fetching from PyPI because the code in the repository seems to be # lagging behind the PyPI releases somehow... version = "0.0.7"; in rec { u_boot_pylib = python3Packages.buildPythonPackage rec { pname = "u_boot_pylib"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-A5r20Y8mgxhOhaKMpd5MJN5ubzPbkodAO0Tr0RN1SRA="; }; build-system = with python3Packages; [ setuptools ]; checkPhase = '' ${python3Packages.python.interpreter} "src/$pname/__main__.py" # There are some tests in other files, but they are broken ''; pythonImportsCheck = [ "u_boot_pylib" ]; }; dtoc = python3Packages.buildPythonPackage rec { pname = "dtoc"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-NA96CznIxjqpw2Ik8AJpJkJ/ei+kQTCUExwFgssV+CM="; }; build-system = with python3Packages; [ setuptools ]; dependencies = (with python3Packages; [ libfdt ]) ++ [ u_boot_pylib ]; pythonImportsCheck = [ "dtoc" ]; }; binman = let btools = [ armTrustedFirmwareTools bzip2 cbfstool # TODO: cst gzip lz4 # TODO: lzma_alone lzop openssl ubootTools vboot_reference xilinx-bootgen xz zstd ]; in python3Packages.buildPythonApplication rec { pname = "binary_manager"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-llEBBhUoW5jTEQeoaTCjZN8y6Kj+PGNUSB3cKpgD06w="; }; patches = [ ./binman-resources.patch ]; patchFlags = [ "-p2" "-d" "src" ]; build-system = with python3Packages; [ setuptools ]; nativeBuildInputs = [ makeWrapper ]; dependencies = (with python3Packages; [ jsonschema pycryptodomex pyelftools yamllint ]) ++ [ dtoc u_boot_pylib ]; preFixup = '' wrapProgram "$out/bin/binman" --prefix PATH : "${lib.makeBinPath btools}" ''; }; patman = python3Packages.buildPythonApplication rec { pname = "patch_manager"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-zD9e87fpWKynpUcfxobbdk6wbM6Ja3f8hEVHS7DGIKQ="; }; build-system = with python3Packages; [ setuptools ]; dependencies = (with python3Packages; [ aiohttp pygit2 ]) ++ [ u_boot_pylib ]; }; } pkgs/top-level/all-packages.nix +1 −0 Original line number Diff line number Diff line Loading @@ -10780,6 +10780,7 @@ with pkgs; inherit (callPackage ../misc/uboot { }) buildUBoot ubootTools ubootPythonTools ubootA20OlinuxinoLime ubootA20OlinuxinoLime2EMMC ubootBananaPi Loading Loading
pkgs/misc/uboot/binman-resources.patch 0 → 100644 +72 −0 Original line number Diff line number Diff line (Patch from https://lists.denx.de/pipermail/u-boot/2024-July/559077.html) pkg_resources is deprecated long ago and being removed in python 3.12. Reimplement functions with importlib.resources. Link: https://docs.python.org/3/library/importlib.resources.html Signed-off-by: Jiaxun Yang <jiaxun.yang at flygoat.com> --- tools/binman/control.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/binman/control.py b/tools/binman/control.py index 2f00279232b8..5549b0ad2185 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -8,12 +8,11 @@ from collections import OrderedDict import glob try: - import importlib.resources -except ImportError: # pragma: no cover + from importlib import resources +except ImportError: # for Python 3.6 - import importlib_resources + import importlib_resources as resources import os -import pkg_resources import re import sys @@ -96,12 +95,12 @@ def _ReadMissingBlobHelp(): msg = '' return tag, msg - my_data = pkg_resources.resource_string(__name__, 'missing-blob-help') + my_data = resources.files(__package__).joinpath('missing-blob-help').read_text() re_tag = re.compile('^([-a-z0-9]+):$') result = {} tag = None msg = '' - for line in my_data.decode('utf-8').splitlines(): + for line in my_data.splitlines(): if not line.startswith('#'): m_tag = re_tag.match(line) if m_tag: @@ -151,8 +150,9 @@ def GetEntryModules(include_testing=True): Returns: Set of paths to entry class filenames """ - glob_list = pkg_resources.resource_listdir(__name__, 'etype') - glob_list = [fname for fname in glob_list if fname.endswith('.py')] + directory = resources.files("binman.etype") + glob_list = [entry.name for entry in directory.iterdir() + if entry.name.endswith('.py')] return set([os.path.splitext(os.path.basename(item))[0] for item in glob_list if include_testing or '_testing' not in item]) @@ -735,7 +735,7 @@ def Binman(args): global state if args.full_help: - with importlib.resources.path('binman', 'README.rst') as readme: + with resources.path('binman', 'README.rst') as readme: tools.print_full_help(str(readme)) return 0 -- 2.45.2
pkgs/misc/uboot/default.nix +5 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ armTrustedFirmwareS905, opensbi, buildPackages, callPackages, darwin, }@pkgs: Loading Loading @@ -198,8 +199,10 @@ in filesToInstall = [ "tools/dumpimage" "tools/fdt_add_pubkey" "tools/fdtgrep" "tools/kwboot" "tools/mkeficapsule" "tools/mkenvimage" "tools/mkimage" "tools/env/fw_printenv" Loading @@ -211,6 +214,8 @@ in }; }; ubootPythonTools = lib.recurseIntoAttrs (callPackages ./python.nix { }); ubootA20OlinuxinoLime = buildUBoot { defconfig = "A20-OLinuXino-Lime_defconfig"; extraMeta.platforms = [ "armv7l-linux" ]; Loading
pkgs/misc/uboot/python.nix 0 → 100644 +160 −0 Original line number Diff line number Diff line { lib, python3Packages, fetchPypi, makeWrapper, armTrustedFirmwareTools, bzip2, cbfstool, gzip, lz4, lzop, openssl, ubootTools, vboot_reference, xilinx-bootgen, xz, zstd, }: let # We are fetching from PyPI because the code in the repository seems to be # lagging behind the PyPI releases somehow... version = "0.0.7"; in rec { u_boot_pylib = python3Packages.buildPythonPackage rec { pname = "u_boot_pylib"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-A5r20Y8mgxhOhaKMpd5MJN5ubzPbkodAO0Tr0RN1SRA="; }; build-system = with python3Packages; [ setuptools ]; checkPhase = '' ${python3Packages.python.interpreter} "src/$pname/__main__.py" # There are some tests in other files, but they are broken ''; pythonImportsCheck = [ "u_boot_pylib" ]; }; dtoc = python3Packages.buildPythonPackage rec { pname = "dtoc"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-NA96CznIxjqpw2Ik8AJpJkJ/ei+kQTCUExwFgssV+CM="; }; build-system = with python3Packages; [ setuptools ]; dependencies = (with python3Packages; [ libfdt ]) ++ [ u_boot_pylib ]; pythonImportsCheck = [ "dtoc" ]; }; binman = let btools = [ armTrustedFirmwareTools bzip2 cbfstool # TODO: cst gzip lz4 # TODO: lzma_alone lzop openssl ubootTools vboot_reference xilinx-bootgen xz zstd ]; in python3Packages.buildPythonApplication rec { pname = "binary_manager"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-llEBBhUoW5jTEQeoaTCjZN8y6Kj+PGNUSB3cKpgD06w="; }; patches = [ ./binman-resources.patch ]; patchFlags = [ "-p2" "-d" "src" ]; build-system = with python3Packages; [ setuptools ]; nativeBuildInputs = [ makeWrapper ]; dependencies = (with python3Packages; [ jsonschema pycryptodomex pyelftools yamllint ]) ++ [ dtoc u_boot_pylib ]; preFixup = '' wrapProgram "$out/bin/binman" --prefix PATH : "${lib.makeBinPath btools}" ''; }; patman = python3Packages.buildPythonApplication rec { pname = "patch_manager"; inherit version; pyproject = true; src = fetchPypi { inherit pname version; hash = "sha256-zD9e87fpWKynpUcfxobbdk6wbM6Ja3f8hEVHS7DGIKQ="; }; build-system = with python3Packages; [ setuptools ]; dependencies = (with python3Packages; [ aiohttp pygit2 ]) ++ [ u_boot_pylib ]; }; }
pkgs/top-level/all-packages.nix +1 −0 Original line number Diff line number Diff line Loading @@ -10780,6 +10780,7 @@ with pkgs; inherit (callPackage ../misc/uboot { }) buildUBoot ubootTools ubootPythonTools ubootA20OlinuxinoLime ubootA20OlinuxinoLime2EMMC ubootBananaPi Loading