diff --git a/bench/app.py b/bench/app.py index 48fbb985..f07251e4 100755 --- a/bench/app.py +++ b/bench/app.py @@ -578,7 +578,8 @@ def install_app( install_python_dev_dependencies(apps=app, bench_path=bench_path, verbose=verbose) if os.path.exists(os.path.join(app_path, "package.json")): - bench.run("yarn install", cwd=app_path) + yarn_install = "yarn install --verbose" if verbose else "yarn install" + bench.run(yarn_install, cwd=app_path) bench.apps.sync(app_name=app, required=resolution, branch=tag, app_dir=app_path) diff --git a/bench/config/templates/supervisor.conf b/bench/config/templates/supervisor.conf index c6a0fb0d..57fd8574 100644 --- a/bench/config/templates/supervisor.conf +++ b/bench/config/templates/supervisor.conf @@ -11,6 +11,7 @@ autorestart=true stdout_logfile={{ bench_dir }}/logs/web.log stderr_logfile={{ bench_dir }}/logs/web.error.log stopwaitsecs=40 +killasgroup=true user={{ user }} directory={{ sites_dir }} diff --git a/bench/utils/bench.py b/bench/utils/bench.py index 1fede3a2..b825200d 100644 --- a/bench/utils/bench.py +++ b/bench/utils/bench.py @@ -47,7 +47,7 @@ def get_venv_path(verbose=False, python="python3"): log("venv cannot be found", level=2) -def update_node_packages(bench_path=".", apps=None): +def update_node_packages(bench_path=".", apps=None, verbose=None): print("Updating node packages...") from distutils.version import LooseVersion @@ -58,9 +58,9 @@ def update_node_packages(bench_path=".", apps=None): # After rollup was merged, frappe_version = 10.1 # if develop_verion is 11 and up, only then install yarn if v < LooseVersion("11.x.x-develop"): - update_npm_packages(bench_path, apps=apps) + update_npm_packages(bench_path, apps=apps, verbose=verbose) else: - update_yarn_packages(bench_path, apps=apps) + update_yarn_packages(bench_path, apps=apps, verbose=verbose) def install_python_dev_dependencies(bench_path=".", apps=None, verbose=False): @@ -110,9 +110,11 @@ def _generate_dev_deps_pattern(pyproject_path): return requirements_pattern -def update_yarn_packages(bench_path=".", apps=None): +def update_yarn_packages(bench_path=".", apps=None, verbose=None): + import bench.cli as bench_cli from bench.bench import Bench + verbose = bench_cli.verbose or verbose bench = Bench(bench_path) apps = apps or bench.apps apps_dir = os.path.join(bench.name, "apps") @@ -127,10 +129,13 @@ def update_yarn_packages(bench_path=".", apps=None): app_path = os.path.join(apps_dir, app) if os.path.exists(os.path.join(app_path, "package.json")): click.secho(f"\nInstalling node dependencies for {app}", fg="yellow") - bench.run("yarn install", cwd=app_path) + yarn_install = "yarn install --verbose" if verbose else "yarn install" + bench.run(yarn_install, cwd=app_path) -def update_npm_packages(bench_path=".", apps=None): +def update_npm_packages(bench_path=".", apps=None, verbose=None): + verbose = bench.cli.verbose or verbose + npm_install = "npm install --verbose" if verbose else "npm install" apps_dir = os.path.join(bench_path, "apps") package_json = {} @@ -162,7 +167,7 @@ def update_npm_packages(bench_path=".", apps=None): with open(os.path.join(bench_path, "package.json"), "w") as f: f.write(json.dumps(package_json, indent=1, sort_keys=True)) - exec_cmd("npm install", cwd=bench_path) + exec_cmd(npm_install, cwd=bench_path) def migrate_env(python, backup=False): @@ -305,22 +310,23 @@ def restart_supervisor_processes(bench_path=".", web_workers=False, _raise=False supervisor_status = get_cmd_output("sudo supervisorctl status", cwd=bench_path) if web_workers and f"{bench_name}-web:" in supervisor_status: - group = f"{bench_name}-web:\t" + groups = [f"{bench_name}-web:\t"] elif f"{bench_name}-workers:" in supervisor_status: - group = f"{bench_name}-workers: {bench_name}-web:" + groups = [f"{bench_name}-web:", f"{bench_name}-workers:"] # backward compatibility elif f"{bench_name}-processes:" in supervisor_status: - group = f"{bench_name}-processes:" + groups = [f"{bench_name}-processes:"] # backward compatibility else: - group = "frappe:" + groups = ["frappe:"] - failure = bench.run(f"{sudo}supervisorctl restart {group}", _raise=_raise) - if failure: - log("restarting supervisor failed. Use `bench restart` to retry.", level=3) + for group in groups: + failure = bench.run(f"{sudo}supervisorctl restart {group}", _raise=_raise) + if failure: + log(f"restarting supervisor group `{group}` failed. Use `bench restart` to retry.", level=3) def restart_systemd_processes(bench_path=".", web_workers=False, _raise=True):