From ff53bc2baf51914ed713bc7b56fac0cbfe0091a5 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Mon, 16 Jun 2025 20:54:13 +0100 Subject: [PATCH 1/2] Revert "nixos-rebuild-ng: silence reexec messages" This reverts commit 4935f5f09bfecfc9d8fab1aeb1a2a9b2ca9487ed. --- .../src/nixos_rebuild/__init__.py | 18 +++++-------- .../nixos-rebuild-ng/src/nixos_rebuild/nix.py | 6 ++--- .../nixos-rebuild-ng/src/tests/test_main.py | 11 +------- .../ni/nixos-rebuild-ng/src/tests/test_nix.py | 26 +------------------ 4 files changed, 11 insertions(+), 50 deletions(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py index 78b961b03e16..fd03e5b69ef4 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py @@ -13,9 +13,7 @@ from .models import Action, BuildAttr, Flake, ImageVariants, NRError, Profile from .process import Remote, cleanup_ssh from .utils import Args, LogFormatter, tabulate -NIXOS_REBUILD_ATTR: Final = "config.system.build.nixos-rebuild" - -logger: Final = logging.getLogger(__name__) +logger: Final = logging.getLogger() logger.setLevel(logging.INFO) @@ -278,28 +276,26 @@ def reexec( flake_build_flags: Args, ) -> None: drv = None + attr = "config.system.build.nixos-rebuild" try: # Parsing the args here but ignore ask_sudo_password since it is not # needed and we would end up asking sudo password twice if flake := Flake.from_arg(args.flake, Remote.from_arg(args.target_host, None)): drv = nix.build_flake( - NIXOS_REBUILD_ATTR, + attr, flake, flake_build_flags | {"no_link": True}, - quiet=True, ) else: build_attr = BuildAttr.from_arg(args.attr, args.file) drv = nix.build( - NIXOS_REBUILD_ATTR, + attr, build_attr, build_flags | {"no_out_link": True}, - quiet=True, ) except CalledProcessError: logger.warning( - "could not build a newer version of nixos-rebuild, using current version", - exc_info=logger.isEnabledFor(logging.DEBUG), + "could not build a newer version of nixos-rebuild, using current version" ) if drv: @@ -323,9 +319,9 @@ def reexec( # - Exec format error (e.g.: another OS/CPU arch) logger.warning( "could not re-exec in a newer version of nixos-rebuild, " - + "using current version", - exc_info=logger.isEnabledFor(logging.DEBUG), + + "using current version" ) + logger.debug("re-exec exception", exc_info=True) # We already run clean-up, let's re-exec in the current version # to avoid issues os.execve(current, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"}) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py index dc95b914b360..3be610b5ddbd 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py @@ -51,7 +51,6 @@ def build( attr: str, build_attr: BuildAttr, build_flags: Args | None = None, - quiet: bool = False, ) -> Path: """Build NixOS attribute using classic Nix. @@ -64,7 +63,7 @@ def build( build_attr.to_attr(attr), *dict_to_flags(build_flags), ] - r = run_wrapper(run_args, stdout=PIPE, stderr=PIPE if quiet else None) + r = run_wrapper(run_args, stdout=PIPE) return Path(r.stdout.strip()) @@ -72,7 +71,6 @@ def build_flake( attr: str, flake: Flake, flake_build_flags: Args | None = None, - quiet: bool = False, ) -> Path: """Build NixOS attribute using Flakes. @@ -86,7 +84,7 @@ def build_flake( flake.to_attr(attr), *dict_to_flags(flake_build_flags), ] - r = run_wrapper(run_args, stdout=PIPE, stderr=PIPE if quiet else None) + r = run_wrapper(run_args, stdout=PIPE) return Path(r.stdout.strip()) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py index 22b7054000a8..59270b73ec38 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py @@ -140,10 +140,9 @@ def test_reexec(mock_build: Mock, mock_execve: Mock, monkeypatch: MonkeyPatch) - mock_build.assert_has_calls( [ call( - nr.NIXOS_REBUILD_ATTR, + "config.system.build.nixos-rebuild", nr.models.BuildAttr(ANY, ANY), {"build": True, "no_out_link": True}, - quiet=True, ) ] ) @@ -188,7 +187,6 @@ def test_reexec_flake( "config.system.build.nixos-rebuild", nr.models.Flake(ANY, ANY), {"flake": True, "no_link": True}, - quiet=True, ) # do not exec if there is no new version mock_execve.assert_not_called() @@ -268,7 +266,6 @@ def test_execute_nix_boot(mock_run: Mock, tmp_path: Path) -> None: ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ), call( @@ -343,7 +340,6 @@ def test_execute_nix_build_vm(mock_run: Mock, tmp_path: Path) -> None: ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ) ] @@ -408,7 +404,6 @@ def test_execute_nix_build_image_flake(mock_run: Mock, tmp_path: Path) -> None: ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ), call( @@ -476,7 +471,6 @@ def test_execute_nix_switch_flake(mock_run: Mock, tmp_path: Path) -> None: ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ), call( @@ -767,7 +761,6 @@ def test_execute_nix_switch_flake_target_host( ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ), call( @@ -1035,7 +1028,6 @@ def test_execute_build(mock_run: Mock, tmp_path: Path) -> None: ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ) ] @@ -1075,7 +1067,6 @@ def test_execute_test_flake(mock_run: Mock, tmp_path: Path) -> None: ], check=True, stdout=PIPE, - stderr=None, **DEFAULT_RUN_KWARGS, ), call( diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py index 195f929aaf53..d87b6b62dca8 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py @@ -36,18 +36,14 @@ def test_build(mock_run: Mock) -> None: "foo", ], stdout=PIPE, - stderr=None, ) assert n.build( - "config.system.build.attr", - m.BuildAttr(Path("file"), "preAttr"), - quiet=True, + "config.system.build.attr", m.BuildAttr(Path("file"), "preAttr") ) == Path("/path/to/file") mock_run.assert_called_with( ["nix-build", Path("file"), "--attr", "preAttr.config.system.build.attr"], stdout=PIPE, - stderr=PIPE, ) @@ -78,26 +74,6 @@ def test_build_flake(mock_run: Mock, monkeypatch: MonkeyPatch, tmpdir: Path) -> "foo", ], stdout=PIPE, - stderr=None, - ) - - assert n.build_flake( - "config.system.build.toplevel", - flake, - None, - quiet=True, - ) == Path("/path/to/file") - mock_run.assert_called_with( - [ - "nix", - "--extra-experimental-features", - "nix-command flakes", - "build", - "--print-out-paths", - '.#nixosConfigurations."hostname".config.system.build.toplevel', - ], - stdout=PIPE, - stderr=PIPE, ) From 780f1c33baa58154726af2f298dbf77394f50be4 Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Mon, 16 Jun 2025 20:57:12 +0100 Subject: [PATCH 2/2] nixos-rebuild-ng: improve log output --- .../src/nixos_rebuild/__init__.py | 18 ++++++++++-------- .../ni/nixos-rebuild-ng/src/tests/test_main.py | 4 ++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py index fd03e5b69ef4..838b8913abb3 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py @@ -13,7 +13,9 @@ from .models import Action, BuildAttr, Flake, ImageVariants, NRError, Profile from .process import Remote, cleanup_ssh from .utils import Args, LogFormatter, tabulate -logger: Final = logging.getLogger() +NIXOS_REBUILD_ATTR: Final = "config.system.build.nixos-rebuild" + +logger: Final = logging.getLogger(__name__) logger.setLevel(logging.INFO) @@ -276,33 +278,33 @@ def reexec( flake_build_flags: Args, ) -> None: drv = None - attr = "config.system.build.nixos-rebuild" try: # Parsing the args here but ignore ask_sudo_password since it is not # needed and we would end up asking sudo password twice if flake := Flake.from_arg(args.flake, Remote.from_arg(args.target_host, None)): drv = nix.build_flake( - attr, + NIXOS_REBUILD_ATTR, flake, flake_build_flags | {"no_link": True}, ) else: build_attr = BuildAttr.from_arg(args.attr, args.file) drv = nix.build( - attr, + NIXOS_REBUILD_ATTR, build_attr, build_flags | {"no_out_link": True}, ) except CalledProcessError: logger.warning( - "could not build a newer version of nixos-rebuild, using current version" + "could not build a newer version of nixos-rebuild, using current version", + exc_info=logger.isEnabledFor(logging.DEBUG), ) if drv: new = drv / f"bin/{EXECUTABLE}" current = Path(argv[0]) if new != current: - logging.debug( + logger.debug( "detected newer version of script, re-exec'ing, current=%s, new=%s", current, new, @@ -319,9 +321,9 @@ def reexec( # - Exec format error (e.g.: another OS/CPU arch) logger.warning( "could not re-exec in a newer version of nixos-rebuild, " - + "using current version" + + "using current version", + exc_info=logger.isEnabledFor(logging.DEBUG), ) - logger.debug("re-exec exception", exc_info=True) # We already run clean-up, let's re-exec in the current version # to avoid issues os.execve(current, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"}) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py index 59270b73ec38..a66d70498c5f 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py @@ -140,7 +140,7 @@ def test_reexec(mock_build: Mock, mock_execve: Mock, monkeypatch: MonkeyPatch) - mock_build.assert_has_calls( [ call( - "config.system.build.nixos-rebuild", + nr.NIXOS_REBUILD_ATTR, nr.models.BuildAttr(ANY, ANY), {"build": True, "no_out_link": True}, ) @@ -184,7 +184,7 @@ def test_reexec_flake( nr.reexec(argv, args, {"build": True}, {"flake": True}) mock_build.assert_called_once_with( - "config.system.build.nixos-rebuild", + nr.NIXOS_REBUILD_ATTR, nr.models.Flake(ANY, ANY), {"flake": True, "no_link": True}, )