From 6ff384e5716dc9392475c35bb381a2872e9f2e6b Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 1 Mar 2024 22:42:04 +0000 Subject: * expose the --nodeps option from Portage in Sisyphus CLI * use it to install packages without retreiving their dependencies * rewrite and update the CLI help menu to reflect the new option * some minor cosmetic fixes --- src/backend/instpkgsrc.py | 42 ++++++++++++-------- src/backend/rmpkgsrc.py | 2 +- src/backend/solvedeps.py | 6 +-- src/backend/sysupgrade.py | 27 +++++++------ src/frontend/cli/sisyphus-cli.py | 84 +++++++++++++++++++++++++--------------- src/frontend/gui/sisyphus-gui.py | 2 +- 6 files changed, 97 insertions(+), 66 deletions(-) (limited to 'src') diff --git a/src/backend/instpkgsrc.py b/src/backend/instpkgsrc.py index 68f10b3..091502b 100644 --- a/src/backend/instpkgsrc.py +++ b/src/backend/instpkgsrc.py @@ -47,23 +47,31 @@ def sigint_handler(signal, frame): signal.signal(signal.SIGINT, sigint_handler) -def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): +def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False, nodeps=False): + go_args = ['--quiet', '--verbose', + '--misspell-suggestion=n', '--fuzzy-search=n'] + nogo_args = ['--quiet', '--pretend', '--getbinpkg', + '--rebuilt-binaries', '--misspell-suggestion=n', '--fuzzy-search=n'] if not sisyphus.checkenv.root(): print(f"{sisyphus.getclr.bright_red}\nRoot permissions are required for this operation.\n{sisyphus.getclr.reset}") sys.exit() else: if gfx_ui: - sisyphus.solvedeps.start.__wrapped__(pkgname) # undecorate + sisyphus.solvedeps.start.__wrapped__( + pkgname, nodeps=False) # undecorate else: sisyphus.syncall.start(gfx_ui=False) - sisyphus.solvedeps.start(pkgname) + if nodeps: + sisyphus.solvedeps.start(pkgname, nodeps=True) + else: + sisyphus.solvedeps.start(pkgname, nodeps=False) bin_list, src_list, is_vague, need_cfg = pickle.load( open(os.path.join(sisyphus.getfs.p_mtd_dir, "sisyphus_pkgdeps.pickle"), "rb")) if is_vague != 0: # catch ambiguous packages - p_exe = subprocess.Popen(['emerge', '--quiet', '--pretend', '--getbinpkg', '--rebuilt-binaries', - '--with-bdeps=y', '--misspell-suggestion=y', '--fuzzy-search=y'] + list(pkgname)) + p_exe = subprocess.Popen( + ['emerge'] + nogo_args + (['--nodeps'] if nodeps else ['--with-bdeps=y']) + list(pkgname)) try: p_exe.wait() except KeyboardInterrupt: @@ -79,8 +87,8 @@ def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): sys.exit() elif need_cfg != 0: # catch aliens - p_exe = subprocess.Popen(['emerge', '--quiet', '--pretend', '--getbinpkg', '--rebuilt-binaries', - '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n'] + list(pkgname)) + p_exe = subprocess.Popen( + ['emerge'] + nogo_args + (['--nodeps'] if nodeps else ['--with-bdeps=y']) + list(pkgname)) try: p_exe.wait() except KeyboardInterrupt: @@ -115,8 +123,8 @@ def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): user_input = input( f"{sisyphus.getclr.bright_white}Would you like to proceed?{sisyphus.getclr.reset} [{sisyphus.getclr.bright_green}Yes{sisyphus.getclr.reset}/{sisyphus.getclr.bright_red}No{sisyphus.getclr.reset}] ") if user_input.lower() in ['yes', 'y', '']: - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--with-bdeps=y', '--misspell-suggestion=n', - '--fuzzy-search=n'] + (['--oneshot'] if oneshot else []) + list(pkgname)) + p_exe = subprocess.Popen(['emerge'] + go_args + (['--nodeps'] if nodeps else [ + '--with-bdeps=y']) + (['--oneshot'] if oneshot else []) + list(pkgname)) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() @@ -170,8 +178,8 @@ def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): if user_input.lower() in ['yes', 'y', '']: sisyphus.dlbinpkg.start(dl_world=False, gfx_ui=False) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--usepkg', '--rebuilt-binaries', '--with-bdeps=y', - '--misspell-suggestion=n', '--fuzzy-search=n'] + (['--oneshot'] if oneshot else []) + list(pkgname)) + p_exe = subprocess.Popen(['emerge'] + go_args + ['--usepkg', '--rebuilt-binaries'] + ( + ['--nodeps'] if nodeps else ['--with-bdeps=y']) + (['--oneshot'] if oneshot else []) + list(pkgname)) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() @@ -218,8 +226,8 @@ def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): if user_input.lower() in ['yes', 'y', '']: sisyphus.dlbinpkg.start(dl_world=False, gfx_ui=False) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--usepkg', '--usepkgonly', '--rebuilt-binaries', - '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n'] + (['--oneshot'] if oneshot else []) + list(pkgname)) + p_exe = subprocess.Popen(['emerge'] + go_args + ['--usepkg', '--usepkgonly', '--rebuilt-binaries'] + ( + ['--nodeps'] if nodeps else ['--with-bdeps=y']) + (['--oneshot'] if oneshot else []) + list(pkgname)) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() @@ -294,8 +302,8 @@ def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): str(len(bin_list)) + " binary package(s)\n\n") sisyphus.dlbinpkg.start(dl_world=False, gfx_ui=True) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--usepkg', '--usepkgonly', '--rebuilt-binaries', '--with-bdeps=y', - '--misspell-suggestion=n', '--fuzzy-search=n'] + pkgname, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p_exe = subprocess.Popen(['emerge'] + go_args + ['--usepkg', '--usepkgonly', '--rebuilt-binaries'] + ( + ['--nodeps'] if nodeps else ['--with-bdeps=y']) + (['--oneshot'] if oneshot else []) + pkgname, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # --nodeps && --oneshot are set to False in the graphical client # kill portage if the program dies or it's terminated by the user atexit.register(sisyphus.killemerge.start, p_exe) @@ -318,8 +326,8 @@ def start(pkgname, ebuild=False, gfx_ui=False, oneshot=False): sisyphus.dlbinpkg.start( dl_world=False, gfx_ui=False) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--usepkg', '--usepkgonly', '--rebuilt-binaries', - '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n'] + (['--oneshot'] if oneshot else []) + list(pkgname)) + p_exe = subprocess.Popen(['emerge'] + go_args + ['--usepkg', '--usepkgonly', '--rebuilt-binaries'] + ( + ['--nodeps'] if nodeps else ['--with-bdeps=y']) + (['--oneshot'] if oneshot else []) + list(pkgname)) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() diff --git a/src/backend/rmpkgsrc.py b/src/backend/rmpkgsrc.py index ec5a097..b039f96 100644 --- a/src/backend/rmpkgsrc.py +++ b/src/backend/rmpkgsrc.py @@ -83,7 +83,7 @@ def start(pkgname, depclean=False, gfx_ui=False, unmerge=False): pass # GUI always calls /, no ambiguity else: p_exe = subprocess.Popen( - ['emerge', '--depclean', '--quiet', '--pretend', '--verbose'] + list(pkgname)) + ['emerge'] + args + ['--pretend', '--verbose'] + list(pkgname)) try: p_exe.wait() except KeyboardInterrupt: diff --git a/src/backend/solvedeps.py b/src/backend/solvedeps.py index d3e8a3b..34d70b8 100644 --- a/src/backend/solvedeps.py +++ b/src/backend/solvedeps.py @@ -17,15 +17,15 @@ signal.signal(signal.SIGINT, sigint_handler) @animation.wait('resolving dependencies') -def start(pkgname=None): +def start(pkgname=None, nodeps=False): bin_list = [] src_list = [] is_vague = int() need_cfg = int() if pkgname: - args = ['--quiet', '--pretend', '--getbinpkg', '--rebuilt-binaries', - '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n'] + list(pkgname) + args = ['--quiet', '--pretend', '--getbinpkg', '--rebuilt-binaries', '--misspell-suggestion=n', + '--fuzzy-search=n'] + (['--nodeps'] if nodeps else ['--with-bdeps=y']) + list(pkgname) else: args = ['--quiet', '--update', '--deep', '--newuse', '--pretend', '--getbinpkg', '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world'] diff --git a/src/backend/sysupgrade.py b/src/backend/sysupgrade.py index f6415f3..f8b01d2 100644 --- a/src/backend/sysupgrade.py +++ b/src/backend/sysupgrade.py @@ -48,6 +48,10 @@ signal.signal(signal.SIGINT, sigint_handler) def start(ebuild=False, gfx_ui=False): + go_args = ['--quiet', '--verbose', '--update', '--deep', '--newuse', + '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n'] + nogo_args = ['--quiet', '--update', '--deep', '--newuse', '--pretend', '--getbinpkg', + '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n',] if not sisyphus.checkenv.root(): print(f"{sisyphus.getclr.bright_red}\nRoot permissions are required for this operation.\n{sisyphus.getclr.reset}") sys.exit() @@ -62,8 +66,7 @@ def start(ebuild=False, gfx_ui=False): open(os.path.join(sisyphus.getfs.p_mtd_dir, "sisyphus_worlddeps.pickle"), "rb")) if need_cfg != 0: # catch aliens - p_exe = subprocess.Popen(['emerge', '--quiet', '--update', '--deep', '--newuse', '--pretend', '--getbinpkg', - '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world']) + p_exe = subprocess.Popen(['emerge'] + nogo_args + ['@world']) try: p_exe.wait() except KeyboardInterrupt: @@ -104,8 +107,8 @@ def start(ebuild=False, gfx_ui=False): user_input = input( f"{sisyphus.getclr.bright_white}Would you like to proceed?{sisyphus.getclr.reset} [{sisyphus.getclr.bright_green}Yes{sisyphus.getclr.reset}/{sisyphus.getclr.bright_red}No{sisyphus.getclr.reset}] ") if user_input.lower() in ['yes', 'y', '']: - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--update', '--deep', '--newuse', - '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world']) + p_exe = subprocess.Popen( + ['emerge'] + go_args + ['@world']) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() @@ -159,8 +162,8 @@ def start(ebuild=False, gfx_ui=False): if user_input.lower() in ['yes', 'y', '']: sisyphus.dlbinpkg.start(dl_world=True, gfx_ui=False) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--update', '--deep', '--newuse', '--usepkg', - '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world']) + p_exe = subprocess.Popen( + ['emerge'] + go_args + ['--usepkg', '--rebuilt-binaries', '@world']) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() @@ -207,8 +210,8 @@ def start(ebuild=False, gfx_ui=False): if user_input.lower() in ['yes', 'y', '']: sisyphus.dlbinpkg.start(dl_world=True, gfx_ui=False) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--update', '--deep', '--newuse', '--usepkg', '--usepkgonly', - '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world']) + p_exe = subprocess.Popen( + ['emerge'] + go_args + ['--usepkg', '--usepkgonly', '--rebuilt-binaries', '@world']) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() @@ -285,8 +288,8 @@ def start(ebuild=False, gfx_ui=False): f"\n\nTotal: {len(bin_list)} binary package(s)\n") sisyphus.dlbinpkg.start(dl_world=True, gfx_ui=True) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--update', '--deep', '--newuse', '--usepkg', '--usepkgonly', '--rebuilt-binaries', - '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p_exe = subprocess.Popen(['emerge'] + go_args + ['--usepkg', '--usepkgonly', + '--rebuilt-binaries', '@world'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) # kill portage if the program dies or it's terminated by the user atexit.register(sisyphus.killemerge.start, p_exe) @@ -309,8 +312,8 @@ def start(ebuild=False, gfx_ui=False): sisyphus.dlbinpkg.start( dl_world=True, gfx_ui=False) os.chdir(sisyphus.getfs.p_cch_dir) - p_exe = subprocess.Popen(['emerge', '--quiet', '--verbose', '--update', '--deep', '--newuse', '--usepkg', '--usepkgonly', - '--rebuilt-binaries', '--backtrack=100', '--with-bdeps=y', '--misspell-suggestion=n', '--fuzzy-search=n', '@world']) + p_exe = subprocess.Popen( + ['emerge'] + go_args + ['--usepkg', '--usepkgonly', '--rebuilt-binaries', '@world']) try: set_nonblocking(sys.stdout.fileno()) spinner_animation() diff --git a/src/frontend/cli/sisyphus-cli.py b/src/frontend/cli/sisyphus-cli.py index 3813e25..541d610 100755 --- a/src/frontend/cli/sisyphus-cli.py +++ b/src/frontend/cli/sisyphus-cli.py @@ -101,44 +101,62 @@ def search(package: List[str] = typer.Argument(...), @app.command("install") def install(pkgname: List[str], ebuild: bool = typer.Option( - False, "--ebuild", "-e", help='Install ebuild(source) package if binary package is not found (slower)'), - oneshot: bool = typer.Option(False, "--oneshot", "-1", help='Do not mark the package as explicitly installed')): + False, "--ebuild", "-e", help='Install ebuild(source) package if binary package is not found (slower).'), + oneshot: bool = typer.Option( + False, "--oneshot", "-1", help='Install the package without marking it as explicitly installed.'), + nodeps: bool = typer.Option(False, "--nodeps", help='Install the package without retrieving its dependencies.')): """ Install binary and/or ebuild(source) packages.\n Binary packages are default, however the --ebuild option can be used to install ebuild(source) packages.\n - The --ebuild option will be automatically suggested if a binary package is not found, but an ebuild(source) package is found.\n - The --ebuild option will fall back to binary packages if installation from ebuild(source) package is not required. (Can be used at all times, *SAFELY*).\n - The --ebuild option will prefer to use binary packages (if available) to satisfy dependencies for the ebuild(source) package, speeding up the installation.\n - The --oneshot option follows the above rules, however it will not mark the package as explicitly installed. (In Gentoo Linux terms: not added to world set).\n - The --ebuild and the --oneshot options can be used both independently of each other and/or combined with each other.\n + The --ebuild option will be recommended automatically if a binary package is not found but a corresponding ebuild (source) package is available.\n + The --ebuild option will revert to binary packages when installation from an ebuild (source) package is unnecessary. This option can be safely used at all times.\n + The --ebuild option will prioritize the use of binary packages (when available) to fulfill dependencies for the ebuild (source) package, thereby accelerating the installation process.\n + The --oneshot option adheres to the aforementioned rules but does not designate the package as explicitly installed. In Gentoo Linux terminology, this means it is not added to the world set.\n + The --nodeps option adheres to the aforementioned rules but does not retrieve the package dependecies. In conjunction with the --oneshot option, it can be used to quickly reinstall any already installed *BINARY* package.\n + The options --ebuild, --oneshot, and --nodeps can be utilized independently or in conjunction with one another, in either their short or long forms.\n + The sequence of utilizing the --ebuild, --oneshot, and --nodeps options is flexible; they can be applied before or after specifying the package name.\n + \n + !!! NOTE !!!\n + \n + To minimize the risk of inadvertent input or typographical errors, the --nodeps option is intentionally without a shortened form.\n + \n + !!! WARNING !!!\n + \n + Unless all required dependencies are already installed, attempting to install an ebuild (source) package using the --ebuild option in conjunction with the --nodeps option is likely to result in failure.\n \n * Examples:\n sisyphus install firefox\n sisyphus install pidgin --ebuild\n - sisyphus install xonotic -e\n + sisyphus install -e xonotic\n sisyphus install filezilla --oneshot\n - sisyphus install thunderbird -1\n + sisyphus install -1 thunderbird\n sisyphus install falkon -e -1\n - sisyphus install opera --ebuild --oneshot\n - sisyphus install vivaldi --oneshot --ebuild\n + sisyphus install --nodeps --oneshot opera\n + sisyphus install -e --nodeps vivaldi\n """ if ebuild: - sisyphus.instpkgsrc.start(pkgname, ebuild=True, - gfx_ui=False, oneshot=oneshot) + sisyphus.instpkgsrc.start( + pkgname, ebuild=True, gfx_ui=False, oneshot=oneshot, nodeps=nodeps) else: - sisyphus.instpkgsrc.start(pkgname, ebuild=False, - gfx_ui=False, oneshot=oneshot) + sisyphus.instpkgsrc.start( + pkgname, ebuild=False, gfx_ui=False, oneshot=oneshot, nodeps=nodeps) @app.command("uninstall") def uninstall(pkgname: List[str], force: bool = typer.Option(False, "--force", "-f", help='Ignore the reverse dependencies and force uninstall the package (DANGEROUS)')): """ Uninstall packages *SAFELY* by checking for reverse dependencies.\n - If there are any reverse dependencies, the package or packages will NOT be uninstalled to prevent the system from breaking.\n - If you are serious about uninstalling the package, it is recommended you uninstall all the reverse dependencies of it as well.\n - This will not always be possible because the reverse dependency tree may be too long and you may need to uninstall important system packages.\n - DANGEROUS : The --force option will ignore the reverse dependencies and uninstall the package *UNSAFELY*, without safeguards.\n - WARNING : The --force option will break your system if you uninstall important system packages (bootloader, kernel, init).\n + To maintain system integrity, if there are any reverse dependencies, the package or packages will not be uninstalled to prevent system instability.\n + If you're set on uninstalling the package or packages, consider removing all of its reverse dependencies first.\n + However, this may not always be feasible due to the extensive nature of the reverse dependency tree, which could involve critical system packages.\n + \n + !!! DANGEROUS !!!\n + \n + The --force option will ignore the reverse dependencies and uninstall the package *UNSAFELY*, without safeguards.\n + \n + !!! WARNING !!!\n + \n + The --force option will break your system if you uninstall important system packages (bootloader, kernel, init).\n \n * Examples:\n sisyphus uninstall firefox # this will succeed, no package depends on firefox\n @@ -158,9 +176,11 @@ def uninstall(pkgname: List[str], force: bool = typer.Option(False, "--force", " def autoremove(): """ Uninstall packages which become orphans and which are no longer needed.\n - Uninstalling a package will usually leave it's dependencies behind. Those dependencies become orphans if no other package requires them.\n - A package may also gain extra dependencies, or loose some dependencies. The lost dependencies become orphans if no other package requires them.\n - In both cases, the orphan packages are no longer needed and can be safely removed.\n + Uninstalling a package will usually leave its dependencies behind.\n + Those dependencies become orphans if no other package requires them.\n + A package may also gain extra dependencies or lose some dependencies.\n + The lost dependencies become orphans if no other package requires them.\n + In either case, the orphan packages are no longer needed and can be safely removed.\n Use this option to check the whole dependency tree for orphan packages, and remove them.\n \n * Examples:\n @@ -203,9 +223,9 @@ def upgrade( """ Upgrade the system using binary and/or ebuild(source) packages.\n Binary packages are default, however the --ebuild option can be used to upgrade the ebuild(source) packages as well, alongside the binary packages.\n - The --ebuild option will be automatically suggested if the ebuild(source) packages need to be upgraded as well, alongside the binary packages.\n - The --ebuild option will fall back to binary packages if the ebuild(source) packages don't require any upgrade. (Can be used at all times, *SAFELY*).\n - The --ebuild option will prefer to use binary packages (if available) to satisfy dependencies for the ebuild(source) packages, speeding up the upgrade.\n + The --ebuild option will be automatically recommended if upgrades are necessary for the ebuild (source) packages, in addition to the binary packages.\n + The --ebuild option will default to binary packages if upgrades are unnecessary for the ebuild (source) packages. This option is safe to use at all times.\n + The --ebuild option will prioritize the use of binary packages (when available) to fulfill dependencies for the ebuild (source) packages, thereby accelerating the upgrade process.\n \n * Examples:\n sisyphus upgrade\n @@ -222,8 +242,8 @@ def upgrade( def spmsync(): """ Sync Sisyphus's package database with Portage's package database.\n - Sisyphus does not track packages installed directly via Portage in it's package database.\n - Use this command to synchronize Sisyphus's package database with Portage's package database.\n + Sisyphus doesn't monitor packages installed directly via Portage in its package database.\n + Use this command to align Sisyphus's package database with Portage's package database.\n \n * Examples:\n sisyphus spmsync\n @@ -234,10 +254,10 @@ def spmsync(): @app.command("rescue") def rescue(): """ - Resurrect Sisyphus's package database if lost or corrupted.\n - If for some reason Sisyphus's package database is lost or corrupted, it can be resurrected using Portage's package database.\n - If Portage's package database is corrupted (in this case you're screwed anyway :D), only a partial resurrection will be possible.\n - If Portage's package database is intact, full resurrection will be possible.\n + Resurrect Sisyphus's package database if it becomes lost or corrupted.\n + If, for any reason, Sisyphus's package database becomes lost or corrupted, it can be resurrected using Portage's package database.\n + In the event of corruption in Portage's package database (in which case, you're in trouble anyway :D), only partial resurrection will be feasible.\n + With Portage's package database intact, complete resurrection will be achievable.\n \n * Examples:\n sisyphus rescue\n diff --git a/src/frontend/gui/sisyphus-gui.py b/src/frontend/gui/sisyphus-gui.py index 44820f7..684a780 100644 --- a/src/frontend/gui/sisyphus-gui.py +++ b/src/frontend/gui/sisyphus-gui.py @@ -441,7 +441,7 @@ class MainWorker(QtCore.QObject): def startInstall(self): self.started.emit() pkgname = Sisyphus.pkgname - sisyphus.instpkgsrc.start(pkgname, ebuild=False, gfx_ui=True, oneshot=False) + sisyphus.instpkgsrc.start(pkgname, ebuild=False, gfx_ui=True, oneshot=False, nodeps=False) self.finished.emit() @QtCore.pyqtSlot() -- cgit v1.2.3