[pacman-dev] [PATCH] Reopen stdin before chrooting
Allan McRae
allan at archlinux.org
Sat Jan 9 01:34:36 UTC 2021
On 1/1/21 4:13 am, morganamilo via pacman-dev wrote:
> Fixes FS#68630
Patch is fine, but commit message needed work. I don't think it is the
reopening of stdin that is important here.
Here is what I edited it to:
Read targets from stdin before chrooting
Operations involving --sysroot and reading targets from stdin were
failing due to attempting to read targets after chrooting. Move the
chroot to happen after targets are read.
Fixes FS#68630
>
> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
> index 7b19162c..4fb7fe3c 100644
> --- a/src/pacman/pacman.c
> +++ b/src/pacman/pacman.c
> @@ -1135,12 +1135,6 @@ int main(int argc, char *argv[])
> cleanup(EXIT_FAILURE);
> }
>
> - if(config->sysroot && (chroot(config->sysroot) != 0 || chdir("/") != 0)) {
> - pm_printf(ALPM_LOG_ERROR,
> - _("chroot to '%s' failed: (%s)\n"), config->sysroot, strerror(errno));
> - cleanup(EXIT_FAILURE);
> - }
> -
> /* we support reading targets from stdin if a cmdline parameter is '-' */
> if(alpm_list_find_str(pm_targets, "-")) {
> if(!isatty(fileno(stdin))) {
> @@ -1191,6 +1185,12 @@ int main(int argc, char *argv[])
> }
> }
>
> + if(config->sysroot && (chroot(config->sysroot) != 0 || chdir("/") != 0)) {
> + pm_printf(ALPM_LOG_ERROR,
> + _("chroot to '%s' failed: (%s)\n"), config->sysroot, strerror(errno));
> + cleanup(EXIT_FAILURE);
> + }
> +
> pm_printf(ALPM_LOG_DEBUG, "pacman v%s - libalpm v%s\n", PACKAGE_VERSION, alpm_version());
>
> /* parse the config file */
>
More information about the pacman-dev
mailing list