Em Wed, 25 Jun 2025 21:52:34 +0530 Sai Vishnu M <saivishnu725@xxxxxxxxx> escreveu: > From: Sai Vishnu M <saivishnu725@xxxxxxxxx> > > Introduce the --interactive flag to enable prompting for package > installation commands. Add $interactive variable and update the usage > message to include the new flag. Check for terminal input (-t STDIN) to > skip interactive feature in a non-interactive session. > > Signed-off-by: Sai Vishnu M <saivishnu725@xxxxxxxxx> Hi Sai/Jon, FYI, I'm currently working on porting this script to Python. I have already an experimental code here, but the hardest part is to test it on all supported distros ;-) My initial version is aiming on support the distros below, provided that I can succeed installing a container with lxc or podman, and run regression tests on all distros via scripts: def check_distros(self): # OS-specific hints logic os_hints = { re.compile("Red Hat Enterprise Linux"): self.give_redhat_hints, re.compile("CentOS"): self.give_redhat_hints, re.compile("Scientific Linux"): self.give_redhat_hints, re.compile("Oracle Linux Server"): self.give_redhat_hints, re.compile("Fedora"): self.give_redhat_hints, re.compile("Ubuntu"): self.give_debian_hints, re.compile("Debian"): self.give_debian_hints, re.compile("Mint"): self.give_debian_hints, re.compile("openSUSE"): self.give_opensuse_hints, re.compile("Mageia"): self.give_mageia_hints, re.compile("OpenMandriva"): self.give_mageia_hints, re.compile("Arch Linux"): self.give_arch_linux_hints, re.compile("Gentoo"): self.give_gentoo_hints, } # If the OS is detected, use per-OS hint logic for regex, os_hint in os_hints.items(): if regex.search(self.system_release): os_hint() return I just succeeded installing on Mageia via docker, as it doesn't have lxc. As always, Gentoo is still a challenge. The same applies to some RHEL-based distros that require cgroups-v1. Anyway, if everything goes well, I'll have it ready along this week. For the port, I'm aiming to have a bug-compatible version with the Perl one, but adding support to install can be a nice addition (eventually with the messages sorted, as I'm planning to sort the install requirements). --- One general comment on this series: you're splitting one logical change into multiple patches, starting from the command line parser. The best is to merge the change on a more atomic way, avoiding potential git bisect breakages. > --- > The RFC proposes 4 patches that will integrate the interactive feature > into the sphinx-pre-install script. > Link: https://lore.kernel.org/linux-doc/CAFttn56VFPjikxjhgds6LjphinStm_cN+7ZhAzsieT0gnBqBDQ@xxxxxxxxxxxxxx/ > > scripts/sphinx-pre-install | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/scripts/sphinx-pre-install b/scripts/sphinx-pre-install > index ad9945ccb0cf..6e6e5bda6186 100755 > --- a/scripts/sphinx-pre-install > +++ b/scripts/sphinx-pre-install > @@ -42,6 +42,7 @@ my $latest_avail_ver; > my $pdf = 1; > my $virtualenv = 1; > my $version_check = 0; > +my $interactive = 0; > > # > # List of required texlive packages on Fedora and OpenSuse > @@ -1002,12 +1003,18 @@ while (@ARGV) { > $pdf = 0; > } elsif ($arg eq "--version-check"){ > $version_check = 1; > + } elsif ($arg eq "--interactive") { > + # check if the user can interact with the script > + if (-t STDIN) { > + $interactive = 1; > + } > } else { > - print "Usage:\n\t$0 <--no-virtualenv> <--no-pdf> <--version-check>\n\n"; > + print "Usage:\n\t$0 <--no-virtualenv> <--no-pdf> <--version-check> <--interactive>\n\n"; > print "Where:\n"; > print "\t--no-virtualenv\t- Recommend installing Sphinx instead of using a virtualenv\n"; > print "\t--version-check\t- if version is compatible, don't check for missing dependencies\n"; > - print "\t--no-pdf\t- don't check for dependencies required to build PDF docs\n\n"; > + print "\t--no-pdf\t- don't check for dependencies required to build PDF docs\n"; > + print "\t--interactive\t- ask to install missing dependencies\n\n"; > exit -1; > } > } Thanks, Mauro