]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
oci-cli: Add missing dependencies
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 23 Jan 2026 14:51:48 +0000 (14:51 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 23 Jan 2026 16:55:24 +0000 (16:55 +0000)
Since the last update, the OCI CLI package requires some extra Python
dependenices. I find it very annoying that Python won't check this
during build time, so I added an extra step where we will run "oci
--help" and see if the command is coming up at all. Hopefully that will
be sufficient any no further Python modules will be loaded whenever they
are needed.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/rootfiles/packages/python3-prompt-toolkit [new file with mode: 0644]
config/rootfiles/packages/python3-wcwidth [new file with mode: 0644]
lfs/oci-cli
lfs/python3-prompt-toolkit [new file with mode: 0644]
lfs/python3-wcwidth [new file with mode: 0644]
make.sh

diff --git a/config/rootfiles/packages/python3-prompt-toolkit b/config/rootfiles/packages/python3-prompt-toolkit
new file mode 100644 (file)
index 0000000..7ba32e2
--- /dev/null
@@ -0,0 +1,176 @@
+#usr/lib/python3.10/site-packages/prompt_toolkit
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/METADATA
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/RECORD
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/licenses
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/licenses/AUTHORS.rst
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/licenses/LICENSE
+#usr/lib/python3.10/site-packages/prompt_toolkit-3.0.52.dist-info/top_level.txt
+usr/lib/python3.10/site-packages/prompt_toolkit/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/application
+usr/lib/python3.10/site-packages/prompt_toolkit/application/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/application/application.py
+usr/lib/python3.10/site-packages/prompt_toolkit/application/current.py
+usr/lib/python3.10/site-packages/prompt_toolkit/application/dummy.py
+usr/lib/python3.10/site-packages/prompt_toolkit/application/run_in_terminal.py
+usr/lib/python3.10/site-packages/prompt_toolkit/auto_suggest.py
+usr/lib/python3.10/site-packages/prompt_toolkit/buffer.py
+usr/lib/python3.10/site-packages/prompt_toolkit/cache.py
+usr/lib/python3.10/site-packages/prompt_toolkit/clipboard
+usr/lib/python3.10/site-packages/prompt_toolkit/clipboard/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/clipboard/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/clipboard/in_memory.py
+usr/lib/python3.10/site-packages/prompt_toolkit/clipboard/pyperclip.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/deduplicate.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/filesystem.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/fuzzy_completer.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/nested.py
+usr/lib/python3.10/site-packages/prompt_toolkit/completion/word_completer.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/completers
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/completers/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/completers/system.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/compiler.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/completion.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/lexer.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/regex_parser.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/regular_languages/validation.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/ssh
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/ssh/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/ssh/server.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/telnet
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/telnet/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/telnet/log.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/telnet/protocol.py
+usr/lib/python3.10/site-packages/prompt_toolkit/contrib/telnet/server.py
+usr/lib/python3.10/site-packages/prompt_toolkit/cursor_shapes.py
+usr/lib/python3.10/site-packages/prompt_toolkit/data_structures.py
+usr/lib/python3.10/site-packages/prompt_toolkit/document.py
+usr/lib/python3.10/site-packages/prompt_toolkit/enums.py
+usr/lib/python3.10/site-packages/prompt_toolkit/eventloop
+usr/lib/python3.10/site-packages/prompt_toolkit/eventloop/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/eventloop/async_generator.py
+usr/lib/python3.10/site-packages/prompt_toolkit/eventloop/inputhook.py
+usr/lib/python3.10/site-packages/prompt_toolkit/eventloop/utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/eventloop/win32.py
+usr/lib/python3.10/site-packages/prompt_toolkit/filters
+usr/lib/python3.10/site-packages/prompt_toolkit/filters/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/filters/app.py
+usr/lib/python3.10/site-packages/prompt_toolkit/filters/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/filters/cli.py
+usr/lib/python3.10/site-packages/prompt_toolkit/filters/utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text/ansi.py
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text/html.py
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text/pygments.py
+usr/lib/python3.10/site-packages/prompt_toolkit/formatted_text/utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/history.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input
+usr/lib/python3.10/site-packages/prompt_toolkit/input/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/ansi_escape_sequences.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/defaults.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/posix_pipe.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/posix_utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/typeahead.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/vt100.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/vt100_parser.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/win32.py
+usr/lib/python3.10/site-packages/prompt_toolkit/input/win32_pipe.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/auto_suggest.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/basic.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/completion.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/cpr.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/emacs.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/focus.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/mouse.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/named_commands.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/open_in_editor.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/page_navigation.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/scroll.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/search.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/vi.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/defaults.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/digraphs.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/emacs_state.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/key_bindings.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/key_processor.py
+usr/lib/python3.10/site-packages/prompt_toolkit/key_binding/vi_state.py
+usr/lib/python3.10/site-packages/prompt_toolkit/keys.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/containers.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/controls.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/dimension.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/dummy.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/layout.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/margins.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/menus.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/mouse_handlers.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/processors.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/screen.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/scrollable_pane.py
+usr/lib/python3.10/site-packages/prompt_toolkit/layout/utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/lexers
+usr/lib/python3.10/site-packages/prompt_toolkit/lexers/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/lexers/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/lexers/pygments.py
+usr/lib/python3.10/site-packages/prompt_toolkit/log.py
+usr/lib/python3.10/site-packages/prompt_toolkit/mouse_events.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output
+usr/lib/python3.10/site-packages/prompt_toolkit/output/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/color_depth.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/conemu.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/defaults.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/flush_stdout.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/plain_text.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/vt100.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/win32.py
+usr/lib/python3.10/site-packages/prompt_toolkit/output/windows10.py
+usr/lib/python3.10/site-packages/prompt_toolkit/patch_stdout.py
+usr/lib/python3.10/site-packages/prompt_toolkit/py.typed
+usr/lib/python3.10/site-packages/prompt_toolkit/renderer.py
+usr/lib/python3.10/site-packages/prompt_toolkit/search.py
+usr/lib/python3.10/site-packages/prompt_toolkit/selection.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/choice_input.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/dialogs.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/progress_bar
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/progress_bar/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/progress_bar/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/progress_bar/formatters.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/prompt.py
+usr/lib/python3.10/site-packages/prompt_toolkit/shortcuts/utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/defaults.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/named_colors.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/pygments.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/style.py
+usr/lib/python3.10/site-packages/prompt_toolkit/styles/style_transformation.py
+usr/lib/python3.10/site-packages/prompt_toolkit/token.py
+usr/lib/python3.10/site-packages/prompt_toolkit/utils.py
+usr/lib/python3.10/site-packages/prompt_toolkit/validation.py
+usr/lib/python3.10/site-packages/prompt_toolkit/widgets
+usr/lib/python3.10/site-packages/prompt_toolkit/widgets/__init__.py
+usr/lib/python3.10/site-packages/prompt_toolkit/widgets/base.py
+usr/lib/python3.10/site-packages/prompt_toolkit/widgets/dialogs.py
+usr/lib/python3.10/site-packages/prompt_toolkit/widgets/menus.py
+usr/lib/python3.10/site-packages/prompt_toolkit/widgets/toolbars.py
+usr/lib/python3.10/site-packages/prompt_toolkit/win32_types.py
diff --git a/config/rootfiles/packages/python3-wcwidth b/config/rootfiles/packages/python3-wcwidth
new file mode 100644 (file)
index 0000000..8dcee79
--- /dev/null
@@ -0,0 +1,20 @@
+#usr/lib/python3.10/site-packages/wcwidth
+#usr/lib/python3.10/site-packages/wcwidth-0.3.1.dist-info
+#usr/lib/python3.10/site-packages/wcwidth-0.3.1.dist-info/METADATA
+#usr/lib/python3.10/site-packages/wcwidth-0.3.1.dist-info/RECORD
+#usr/lib/python3.10/site-packages/wcwidth-0.3.1.dist-info/WHEEL
+#usr/lib/python3.10/site-packages/wcwidth-0.3.1.dist-info/licenses
+#usr/lib/python3.10/site-packages/wcwidth-0.3.1.dist-info/licenses/LICENSE
+usr/lib/python3.10/site-packages/wcwidth/__init__.py
+usr/lib/python3.10/site-packages/wcwidth/bisearch.py
+usr/lib/python3.10/site-packages/wcwidth/control_codes.py
+usr/lib/python3.10/site-packages/wcwidth/escape_sequences.py
+usr/lib/python3.10/site-packages/wcwidth/grapheme.py
+usr/lib/python3.10/site-packages/wcwidth/table_ambiguous.py
+usr/lib/python3.10/site-packages/wcwidth/table_grapheme.py
+usr/lib/python3.10/site-packages/wcwidth/table_vs16.py
+usr/lib/python3.10/site-packages/wcwidth/table_wide.py
+usr/lib/python3.10/site-packages/wcwidth/table_zero.py
+usr/lib/python3.10/site-packages/wcwidth/textwrap.py
+usr/lib/python3.10/site-packages/wcwidth/unicode_versions.py
+usr/lib/python3.10/site-packages/wcwidth/wcwidth.py
index 20cbfc23722d56af69ecbce94cba15265e8c8233..a8998c1d8b72c77cf173b8995637887e716e3324 100644 (file)
@@ -32,10 +32,10 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = oci-cli
-PAK_VER    = 5
+PAK_VER    = 6
 
-DEPS       = oci-python-sdk python3-arrow python3-jmespath python3-six \
-       python3-terminaltables
+DEPS       = oci-python-sdk python3-arrow python3-jmespath \
+       python3-prompt-toolkit python3-six python3-terminaltables
 
 ###############################################################################
 # Top-level Rules
@@ -80,5 +80,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && python3 setup.py build
        cd $(DIR_APP) && python3 setup.py install --root=/
+
+       # Run the help command just to make sure it works as we need to make
+       # sure that we have all required Python dependenices
+       oci --help
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/python3-prompt-toolkit b/lfs/python3-prompt-toolkit
new file mode 100644 (file)
index 0000000..c7f4ed7
--- /dev/null
@@ -0,0 +1,83 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 3.0.52
+
+THISAPP    = prompt_toolkit-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = python3-prompt-toolkit
+PAK_VER    = 1
+
+DEPS       = python3-wcwidth
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = 7568bfc396bfe3b69028e199f7e6d2c04a35b76e682c3eff19be818f400614efde8fa06d9b058ee323b35fd960c27e8226dd243f65cd2d94a8788fdc0c111b31
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+       @$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && python3 -m build --wheel --no-isolation
+       cd $(DIR_APP) && python3 -m install --destdir=/ dist/*.whl
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/python3-wcwidth b/lfs/python3-wcwidth
new file mode 100644 (file)
index 0000000..4e47f5b
--- /dev/null
@@ -0,0 +1,88 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2018  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.3.1
+
+THISAPP    = wcwidth-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = python3-wcwidth
+PAK_VER    = 1
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = dca2e1458299b9dd76ee5abf23dbf42179c214a27d03e297bfed4e806367b17eb80adeb2d132b6af854c736ce566827fbd71700b6732665e75ccb6c264dbd9fb
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist: 
+       @$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+       @$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+
+       # ValueError: Unknown classifier in field `project.classifiers`: Programming Language :: Python :: 3.14
+       cd $(DIR_APP) && sed -e "/3\.14/d" -i pyproject.toml
+
+       # TypeError: Field `project.license-files` must be a table
+       cd $(DIR_APP) && sed -e "s/^license-files/#&/" -i pyproject.toml
+
+       cd $(DIR_APP) && python3 -m build --wheel --no-isolation
+       cd $(DIR_APP) && python3 -m install --destdir=/ dist/*.whl
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index ed4222ac580e4ec824d6142b43abbb7b72736292..d9208d72a524e157e1a7841685b1e541a5abac29 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -2017,6 +2017,8 @@ build_system() {
        lfsmake2 python3-pyfuse3
        lfsmake2 python3-pillow
        lfsmake2 python3-reportlab
+       lfsmake2 python3-wcwidth
+       lfsmake2 python3-prompt-toolkit
        lfsmake2 aws-cli
        lfsmake2 oci-python-sdk
        lfsmake2 oci-cli