enhancement: quickdepopt (??) command that resolves isinst Optional: dependencies #1

Closed
opened 2024-11-11 22:42:46 +01:00 by sdaoden · 3 comments

(I would send an email but i think it will not get through.)

Regarding your "automatic build and include all Optional: dependencies" that i rejected as "not a thing for me".
It even seems the code already exists (and did by then), called "soft dependencies", as i know see!

What i would really love to see is that if i call "quickdep" or, as envisioned above, a dedicated command, i get an unfolded list of all hard- as well as all installed soft dependencies.
This is something that is impossible to do today.
Then i can as before "simply" install the soft dependencies that i want, and can correctly include those in the dependency tree when rebuilding!

(But to me that "simply turn soft to hard dependencies" isn't it, as sometimes the resulting list is .. more than just immense.)

Thank you! (Also for fixing vorbis-tools build with gcc 14)

(I would send an email but i think it will not get through.) Regarding your "automatic build and include all Optional: dependencies" that i rejected as "not a thing for me". It even seems the code already exists (and did by then), called "soft dependencies", as i know see! What *i* would really love to see is that if i call "quickdep" or, as envisioned above, a dedicated command, i get an unfolded list of all hard- as well as all *installed* soft dependencies. This is something that is impossible to do today. Then i can as before "simply" install the soft dependencies that i want, *and* can correctly include those in the dependency tree when rebuilding! (But to me that "simply turn soft to hard dependencies" isn't it, as sometimes the resulting list is .. more than just immense.) Thank you! (Also for fixing vorbis-tools build with gcc 14)
Owner

Hi @sdaoden and thanks for your feedback!

What i would really love to see is that if i call "quickdep" or, as envisioned above, a dedicated command, i get an unfolded list of all hard- as well as all installed soft dependencies.

Using the master branch of this repo, I tested "prt-get quickdep ffmpeg", both with and without the resolution of optional dependencies. Here are the results with optional dependency resolution disabled:

prt-get quickdep ffmpeg
yasm ffmpeg

Here are the results with optional dependency resolution enabled:

prt-get quickdep --softdeps ffmpeg
yasm alsa-lib vulkan-headers bzip2 expat ncurses libffi libnsl libtirpc mpdecimal zlib xz libnghttp2 openssl jsoncpp attr lzo libuv lzlib rhash xorg-util-macros fdk-aac brotli libpcre2 kmod xorg-libpixman graphite2 lld libunistring libgmp libtasn1 make-ca nasm fribidi libmodplug libyaml libogg giflib opus x265 aom libvpx x264 readline lame libpng xorg-libpciaccess zstd elfutils libxml2 acl xorg-xtrans eudev libidn2 nettle libjpeg-turbo openh264 libvorbis gdbm sqlite3 lua libdrm curl file itstool libarchive libtiff libtheora python3 util-linux cmake lcms2 python3-setuptools xorg-xcb-proto ninja spirv-headers openjpeg2 meson python3-pip python3-markupsafe python3-pytz python3-wheel llvm libwebp spirv-tools xorg-xorgproto p11-kit python3-flit-core python3-tomli python3-installer python3-mako python3-babel clang glslang spirv-llvm-translator xorg-libxau xorg-libxdmcp xorg-libice xorg-libxshmfence gnutls python3-packaging python3-pyproject-hooks icu rust shaderc libclc xorg-libxcb xorg-libsm glib python3-build cbindgen rust-bindgen xorg-libx11 xorg-xcb-util shared-mime-info python3-jinja2 python3-cython xorg-libxext xorg-libxrender xorg-libxfixes glad python3-pyyaml libglvnd xorg-libxv xorg-libxxf86vm xorg-libxrandr cairo xorg-libxdamage xorg-libxvmc vulkan-loader gobject-introspection dav1d libplacebo mesa harfbuzz gdk-pixbuf libsdl2 freetype libass xorg-libxft fontconfig pango librsvg ffmpeg

The second command obviously generates a bigger list, but the list does not include all optional dependencies, only the ones that are presently installed. For example, the quickdep list omits libsoxr, rubberband, and svt-av1, even though they appear among the optional dependencies in the ffmpeg Pkgfile.

Toggling optional dependency resolution can be done at the command line (using the --softdeps switch as shown above), or in the prt-get config file. However, if you enable this feature in the config file, then the only way to override it at the command line is with the awkward option "--config-set='softdeps no'". In the future I might consider adding a less cumbersome command-line switch to temporarily disable optional dependency resolution.

Hi @sdaoden and thanks for your feedback! > What i would really love to see is that if i call "quickdep" or, as envisioned above, a dedicated command, i get an unfolded list of all hard- as well as all installed soft dependencies. Using the master branch of this repo, I tested "prt-get quickdep ffmpeg", both with and without the resolution of optional dependencies. Here are the results with optional dependency resolution disabled: > prt-get quickdep ffmpeg > yasm ffmpeg Here are the results with optional dependency resolution enabled: > prt-get quickdep --softdeps ffmpeg > yasm alsa-lib vulkan-headers bzip2 expat ncurses libffi libnsl libtirpc mpdecimal zlib xz libnghttp2 openssl jsoncpp attr lzo libuv lzlib rhash xorg-util-macros fdk-aac brotli libpcre2 kmod xorg-libpixman graphite2 lld libunistring libgmp libtasn1 make-ca nasm fribidi libmodplug libyaml libogg giflib opus x265 aom libvpx x264 readline lame libpng xorg-libpciaccess zstd elfutils libxml2 acl xorg-xtrans eudev libidn2 nettle libjpeg-turbo openh264 libvorbis gdbm sqlite3 lua libdrm curl file itstool libarchive libtiff libtheora python3 util-linux cmake lcms2 python3-setuptools xorg-xcb-proto ninja spirv-headers openjpeg2 meson python3-pip python3-markupsafe python3-pytz python3-wheel llvm libwebp spirv-tools xorg-xorgproto p11-kit python3-flit-core python3-tomli python3-installer python3-mako python3-babel clang glslang spirv-llvm-translator xorg-libxau xorg-libxdmcp xorg-libice xorg-libxshmfence gnutls python3-packaging python3-pyproject-hooks icu rust shaderc libclc xorg-libxcb xorg-libsm glib python3-build cbindgen rust-bindgen xorg-libx11 xorg-xcb-util shared-mime-info python3-jinja2 python3-cython xorg-libxext xorg-libxrender xorg-libxfixes glad python3-pyyaml libglvnd xorg-libxv xorg-libxxf86vm xorg-libxrandr cairo xorg-libxdamage xorg-libxvmc vulkan-loader gobject-introspection dav1d libplacebo mesa harfbuzz gdk-pixbuf libsdl2 freetype libass xorg-libxft fontconfig pango librsvg ffmpeg The second command obviously generates a bigger list, but the list does not include _all_ optional dependencies, only the ones that are presently installed. For example, the quickdep list omits libsoxr, rubberband, and svt-av1, even though they appear among the optional dependencies in the ffmpeg Pkgfile. Toggling optional dependency resolution can be done at the command line (using the --softdeps switch as shown above), or in the prt-get config file. However, if you enable this feature in the config file, then the only way to override it at the command line is with the awkward option "--config-set='softdeps no'". In the future I might consider adding a less cumbersome command-line switch to temporarily disable optional dependency resolution.
Author

Oh yes? It seems i looked overly superficially and had your posting in the back of my head.
Indeed i see now "(not greedy) || ..isInstalled()"!
And that really means --softdeps argument to quickdep does exactly this?
This is very cool! Thanks for that!
Is this to be release soon? ... I think i will clone the repo and try that out for real. It is exactly what i need, then!
Ciao!!

Oh yes? It seems i looked overly superficially and had your posting in the back of my head. Indeed i see now "(not greedy) || ..isInstalled()"! And that really means --softdeps argument to quickdep does exactly this? This is *very* cool! Thanks for that! Is this to be release soon? ... I think i will clone the repo and try that out for real. It is *exactly* what i need, then! Ciao!!
Owner

Is this to be release soon?

A forked repo on this Gitea instance is probably not the best place to discuss such plans. I suggest continuing the mailing list thread, or opening an issue or pull request under core/prt-get. The mailing list is arguably more appropriate, giving the wider CRUX community the chance to express a preference for one of the branches in this repo, before updating a core port.

This repo has another branch called mixed-upinst, which merges "install" and "update" so that you can issue a prt-get command with a combination of both installed and not-yet-installed targets. The master branch still retains the original distinction between "install" and "update". I created the mixed-upinst branch in response to an item on the TODO list, but maybe there's not much demand for that feature any more. Restarting the mailing list thread would be the best way to gauge the community's opinion, and then the community's preferred branch could be merged into the official repo.

> Is this to be release soon? A forked repo on this Gitea instance is probably not the best place to discuss such plans. I suggest continuing the mailing list thread, or opening an issue or pull request under core/prt-get. The mailing list is arguably more appropriate, giving the wider CRUX community the chance to express a preference for one of the branches in this repo, before updating a core port. This repo has another branch called mixed-upinst, which merges "install" and "update" so that you can issue a prt-get command with a combination of both installed and not-yet-installed targets. The master branch still retains the original distinction between "install" and "update". I created the mixed-upinst branch in response to an item on the TODO list, but maybe there's not much demand for that feature any more. Restarting the mailing list thread would be the best way to gauge the community's opinion, and then the community's preferred branch could be merged into the official repo.
Sign in to join this conversation.
No Label
No Milestone
No project
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: farkuhar/prt-get#1
No description provided.