Bug#1109975: unblock: debianutils/5.23.1 (pre-approval)
Control: tags -1 moreinfo confirmed
On 2025-07-27 13:28:27 +0200, Niels Thykier wrote:
> Niels Thykier:
> > Package: release.debian.org
> > Severity: normal
> > X-Debbugs-Cc: debianutils@packages.debian.org, niels@thykier.net
> > Control: affects -1 + src:debianutils
> > User: release.debian.org@packages.debian.org
> > Usertags: unblock
> >
> > Please permit the upload of and provide an unblock for the package
> > debianutils.
> >
>
> Correction to this unblock request. At request of Bastian Blank (who
> requested the change originally for the Linux team), I have removed the
> message entirely.
>
> In his view, the standard error message would only have been fine if none of
> the directories existed and we emitted for each missing directory. Removing
> the message entirely was the simpler of the two options, so I went with
> that. Updated diff attached.
Assuming this can be uploaded very soon, please go ahead and remove the
moreinfo tag once the upload is in unstable.
Cheers
>
> > [ Reason ]
> > In 5.22 (April), `run-parts --list` was changed to no longer fail when
> > given non-existing directories per #1102512 to support the UAPI
> > Configuration Files Spec.
> >
> > The code replaced a hard error with a warning for this case.
> > Unfortunately, the warning is emitted to `stdout` interleaved with the
> > directories making scripting usage hard.
> >
> > [ Impact ]
> > For script consumers of `run-parts --list`, then #1102512 might as well
> > not be fixed since it will be difficult to use the change in practice.
> >
> > However, existing stable users will not be relying on this feature yet
> > anyhow (the change is making `run-parts` more permissive).
> >
> > For other consumers of `debianutils`, there will be no impact.
> >
> > [ Tests ]
> > A test case was added to ensure non-existing directories with `run-parts
> > --list` does not emit any output. See `debian/tests/run-parts.test`.
> >
> > [ Risks ]
> > We believe the risks to be low but it is a change to an `Essential: yes`
> > package. The code change itself is trivial and tested.
> >
> > [ Checklist ]
> > [X] all changes are documented in the d/changelog
> > [X] I reviewed all changes and I approve them
> > [X] attach debdiff against the package in testing. Note the diff is a
> > `git diff`, but I will be using `tag2upload`.
> >
> > [ Other info ]
> > (Anything else the release team should know.)
> >
> > unblock debianutils/5.23.1
>
> diff --git a/debian/changelog b/debian/changelog
> index 9587aeb..ba141c6 100644
> --- a/debian/changelog
> +++ b/debian/changelog
> @@ -1,3 +1,12 @@
> +debianutils (5.23.2) unstable; urgency=medium
> +
> + * run-parts: Remove warning on non-existing
> + directory with `--list`. It was emitted
> + to `stdout` and even on `stderr` it would
> + cause issues. (Closes: #1109705)
> +
> + -- Niels Thykier <niels@thykier.net> Sun, 27 Jul 2025 11:01:22 +0000
> +
> debianutils (5.23.1) unstable; urgency=medium
>
> * Re-release to fix a few mistakes in 5.23.
> diff --git a/debian/tests/run-parts.test b/debian/tests/run-parts.test
> index 5574526..87d962c 100755
> --- a/debian/tests/run-parts.test
> +++ b/debian/tests/run-parts.test
> @@ -29,6 +29,12 @@ END
> chmod 755 "${AUTOPKGTEST_TMP}/Run-parts/executable1"
> cp --archive "${AUTOPKGTEST_TMP}/Run-parts/executable1" "${AUTOPKGTEST_TMP}/Run-parts/executable2"
>
> +list_missing_path=$("$RUN_PARTS" --list "${AUTOPKGTEST_TMP}/nonexisting" 2>/dev/null)
> +if [ -n "${list_missing_path}" ]; then
> + echo "Failure! 'run-parts --list .../nonexisting' should return no matches, got: ${list_missing_path}" >&2
> + exit 1
> +fi
> +
> list=$("$RUN_PARTS" --list "${AUTOPKGTEST_TMP}/Run-parts")
> echo "$list"
> test=$("$RUN_PARTS" --test "${AUTOPKGTEST_TMP}/Run-parts")
> @@ -74,4 +80,4 @@ chmod 755 "${AUTOPKGTEST_TMP}/Run-parts2/executable1"
> "$RUN_PARTS" -v --exit-on-error "${AUTOPKGTEST_TMP}/Run-parts2" "${AUTOPKGTEST_TMP}/Run-parts" 2>&1
>
> # Run-parts3 does not exist, so it is skipped and processing continues
> -"$RUN_PARTS" -v --exit-on-error "${AUTOPKGTEST_TMP}/Run-parts3" "${AUTOPKGTEST_TMP}/Run-parts2" 2>&1
> \ No newline at end of file
> +"$RUN_PARTS" -v --exit-on-error "${AUTOPKGTEST_TMP}/Run-parts3" "${AUTOPKGTEST_TMP}/Run-parts2" 2>&1
> diff --git a/run-parts.c b/run-parts.c
> index 9fce509..294c492 100644
> --- a/run-parts.c
> +++ b/run-parts.c
> @@ -506,7 +506,6 @@ void run_parts(char **dirnames)
> for (int i = 0; dirnames[i] != NULL; i++) {
> DIR *dirfd = opendir(dirnames[i]);
> if (!dirfd) {
> - printf("run-parts: Skipping \"%s\"; failed to opendir: %s\n", dirnames[i], strerror(errno));
> continue;
> }
> struct dirent *dp;
--
Sebastian Ramacher
Reply to: